home *** CD-ROM | disk | FTP | other *** search
- ' -----------------------------------------------------------------------------
- ' Name : TEXTWRITER ST V2.3
- ' Autor : K-H Wallon,Leidenhofenerstraße 25, 3557 Ebsdorfergrund 6 (06424/4504)
- ' Datum : 23.03.89
- ' Uhrzeit : 153500
- ' Bemerkung : Das Drucken klappt noch nicht richtig! Falsche Blattlänge!
- ' : Papierlen=ca.55 aber immernoch viele Fehler beim Drucken!
- '
- ' Ideen : Einrücken bis Cursor, Seitenformat,
- ' : Besseres Formatieren der Zeilen
- '
- ' -----------------------------------------------------------------------------
- ON BREAK GOSUB stoppen
- ON ERROR GOSUB fehlerabfanger
- DEFBYT "a-z"
- DEFINT "r_"
- IF XBIOS(4)<>2
- ALERT 1,"Warnung! Das Programm ist|für die 640x400 Auflösung|geschrieben worden.",1," Return ",a%
- ENDIF
- DEFBYT "a-z"
- DEFINT "r_"
- @anfang
- @rsc_init
- @rsc_load
- '
- ' RSC-Files noch ein bisschen verändern
- '
- OB_STATE(r_einstell%,ascmod&)=8
- OB_STATE(r_einstell%,twmod&)=0
- OB_STATE(r_textattr%,sfett&)=8
- OB_STATE(r_textattr%,sunter&)=8
- OB_STATE(r_textattr%,skursiv&)=8
- OB_STATE(r_textattr%,shell&)=8
- OB_STATE(r_textattr%,sscript&)=8
- OB_STATE(r_textattr%,ssup&)=8
- OB_STATE(r_einstell%,trennaus&)=8
- '
- @vorbereitungen
- ~FORM_DIAL(1,0,0,5,5,0,0,639,399)
- ~OBJC_DRAW(r_bild%,0,7,0,0,640,400)
- LINE 0,384,639,384
- COLOR 0
- LINE 0,383,639,383
- COLOR 1
- GET 0,384,639,399,men$
- @statuszeile
- ' PRINT CHR$(27)+"e"; ! VT52-Escape-Sequenz für Cursor einschalten
- DO ! Die Endlosschleife für das Einlesen der Tasten
- taste$=INKEY$
- asc%=ASC(taste$)
- scan%=ASC(RIGHT$(taste$))
- IF asc%=27
- @menue(FALSE)
- ENDIF
- IF LEN(taste$)=2 ! z.B. Cursorsteuerung, Undo- und Help-Taste, usw.
- @kommando2
- LPOKE XBIOS(14,1)+6,0 ! Tastaturpuffer leeren (Head- und Tail-
- ENDIF
- IF asc%>31 AND asc%<>127
- @druckbares_zeichen
- ELSE
- IF LEN(taste$)=1
- @kommando1 ! viele Control-Kommandos, Return, etc.
- LPOKE XBIOS(14,1)+6,0 ! Tastaturpuffer leeren (Head- und Tailzeiger auf
- ENDIF
- ENDIF
- IF MOUSEK=1
- SELECT MOUSEY
- CASE 15 TO 33
- IF MOUSEX>(zlen%*cb%)
- @zeilenlaenge
- ENDIF
- CASE 385 TO 400
- @menue(TRUE)
- DEFAULT
- @cursor_setzen
- ENDSELECT
- ENDIF
- IF MOUSEK=3
- @plaziere_cursor
- ENDIF
- IF MOUSEK=2
- IF MOUSEY<80
- sp|=CRSCOL
- PRINT CHR$(27)+"f";
- von%=XBIOS(3)+2560
- nach%=XBIOS(3)+3840
- REPEAT
- IF oberste%>0
- DEC oberste%
- BMOVE von%,nach%,26880
- IF block!
- IF oberste%+1>=blockanfang% AND oberste%+1<=blockende%
- PRINT CHR$(27)+"p";
- ELSE
- PRINT CHR$(27)+"q";
- ENDIF
- ENDIF
- PRINT AT(1,3);CHR$(27)+"l";zeile$(oberste%+1);
- ENDIF
- UNTIL MOUSEK<>2
- @positionen
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,3);
- ENDIF
- IF MOUSEY>320
- sp|=CRSCOL
- PRINT CHR$(27)+"f";
- wo%=oberste%+23
- von%=XBIOS(3)+3840
- nach%=XBIOS(3)+2560
- REPEAT
- IF wo%=<max_zeilen%
- BMOVE von%,nach%,26880
- IF block!
- IF wo%>=blockanfang% AND wo%<=blockende%
- PRINT CHR$(27)+"p";
- ELSE
- PRINT CHR$(27)+"q";
- ENDIF
- ENDIF
- PRINT AT(1,24);CHR$(27)+"l";zeile$(wo%);
- ENDIF
- INC wo%
- UNTIL MOUSEK<>2
- oberste%=wo%-23
- @positionen
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,24);
- ENDIF
- ENDIF
- LOOP
- '
- > PROCEDURE vorbereitungen
- @cl_s
- OPTION BASE 1
- max_zeilen%=FRE(0)/85
- max_zeilen%=MIN(max_zeilen%,5000)
- DIM zeile$(max_zeilen%) ! enthält die Textzeilen
- DIM dummy$(max_zeilen%) ! wird für einige Blockoperationen benötigt
- DIM x%(10),y%(10),t$(10),l%(10),v%(10),i$(10),par!(7)
- DIM tabulator!(80),ztabulator!(80)
- DIM marke%(3),phr$(10)
- DIM vorsilbe$(32)
- RESTORE vorsilben
- FOR i|=1 TO 32
- READ vorsilbe$(i|)
- NEXT i|
- vokalmenge$="aeiouäöüyAEIOUÄÖÜY"
- nichttrennen$="ch ph ei eu th st"
- ARRAYFILL par!(),FALSE
- ARRAYFILL tabulator!(),FALSE
- ARRAYFILL ztabulator!(),FALSE
- par!(5)=TRUE
- basis%=LPEEK(ARRPTR(pointer%()))+4
- dummy_basis%=LPEEK(ARRPTR(dummy%()))+4
- asc!=FALSE
- tw!=TRUE
- links!=TRUE
- rechts!=FALSE
- blocksatz!=FALSE
- zentre!=FALSE
- insertmode!=TRUE
- tausch!=TRUE
- invers!=TRUE
- altse$=" 1"
- i%=0
- VDISYS 38
- cb%=DPEEK(PTSOUT+4)
- ch%=DPEEK(PTSOUT+6)
- lh%=DPEEK(PTSOUT+2)
- '
- ' einstellen der Druckerparameter
- '
- elite$=CHR$(27)+"M"
- pica$=CHR$(27)+"P"
- nlq$=CHR$(27)+"x"+CHR$(1)
- nlqaus$=CHR$(27)+"x"+CHR$(0)
- schmal$=CHR$(27)+CHR$(15)
- schmalaus$=CHR$(18)
- prop$=CHR$(27)+"p"+CHR$(1)
- propaus$=CHR$(27)+"p"+CHR$(0)
- kur$=CHR$(27)+">"
- kuraus$=CHR$(27)+"#"
- dopp$=CHR$(27)+"G"
- doppaus$=CHR$(27)+"H"
- druck$=CHR$(27)+"R"+CHR$(2)+schmalaus$+elite$
- zeistand%=12
- '
- ' Ende der Druckeranpassung
- '
- ' Allgemeine Variabeln zur Programmsteuerung
- '
- pfad$="\*.TXT"
- filename$="testtext.txt"
- menstr$="dbastceDBASTCE"
- diskstr$="lsap-ofdwn-qx"
- blockstr$="ae-ls-kvdp-m"
- arbstr$="iu-zdtp-senf-1!2"+CHR$(34)+"3§"
- einstr$="szdhatp--nvg"
- tabulator%=5
- papierlen%=64
- seitelen%=58
- lrand%=0
- rrand%=79
- kopfob%=0
- aboben%=2
- fuss%=0
- abunten%=2
- zlen%=79
- menue%=1
- oberste%=0 ! Nummer der Textzeile in der ersten Bildschirmzeile
- trenne!=TRUE
- '
- ' Array für Seitengrenzen anlegen
- '
- DIM seiten!(max_zeilen%)
- ARRAYFILL seiten!(),FALSE
- OPTION BASE 0
- FOR i%=0 TO max_zeilen%-1 STEP seitelen%
- seiten!(i%)=TRUE
- NEXT i%
- FOR i|=0 TO seitelen%-1
- seiten!(i|)=FALSE
- NEXT i|
- VOID XBIOS(21,3,-1) ! Cursorblinken im compilierten Programm ausschalten
- PRINT CHR$(27)+"w"; ! VT52 für automatischen Zeilenüberlauf abschalten
- '
- ' Tabulatorleiste erstellen
- '
- OPTION BASE 0
- FOR i|=0 TO zlen% STEP tabulator%
- tabulator!(i|)=TRUE
- NEXT i|
- OPTION BASE 1
- IF BIOS(11,-1) AND 16=16
- PRINT AT(34,1);"©"
- ELSE
- PRINT AT(34,1);" "
- ENDIF
- PRINT AT(1,3);
- @mauslesen
- RETURN
- > PROCEDURE druckbares_zeichen
- LOCAL sp|,zp|,laenge|,raus!
- zp|=CRSLIN
- sp|=CRSCOL
- nr%=(oberste%-2)+CRSLIN
- um|=BIOS(11,-1)
- IF asc%=54 ! Cursor rechts zum Wortanfang
- IF BIOS(11,-1)>=1 AND BIOS(11,-1)<=3 ! mit der Shift Taste
- nr%=(oberste%-2)+CRSLIN
- IF LEN(zeile$(nr%))>sp|
- npos|=INSTR(sp|,zeile$(nr%)," ")
- IF npos|>0
- sp|=npos|+1
- ENDIF
- ENDIF
- PRINT AT(sp|,zp|);
- GOTO druckbar_ende
- ENDIF
- ENDIF
- '
- IF asc%=52 ! Cursor Links
- IF BIOS(11,-1)>=1 AND BIOS(11,-1)<=3 ! mit der Shift Taste
- raus!=FALSE
- nr%=(oberste%-2)+CRSLIN
- laenge|=LEN(zeile$(nr%))
- IF laenge|>sp|
- FOR i|=sp| DOWNTO 1
- IF MID$(zeile$(nr%),i|,1)=" "
- npos|=i|
- raus!=TRUE
- ENDIF
- EXIT IF raus!
- NEXT i|
- IF npos|>1
- sp|=npos|-1
- ENDIF
- ENDIF
- PRINT AT(sp|,zp|);
- GOTO druckbar_ende
- ENDIF
- ENDIF
- IF asc%=50 ! Cursor runter
- IF BTST(um|,0) OR BTST(um|,1) ! mit der Shift oder Control-Taste
- @page_down
- GOTO druckbar_ende
- ENDIF
- ENDIF
- IF asc%=56
- IF BTST(um|,0) OR BTST(um|,1)! mit der Shift oder Control-Taste
- @page_up
- GOTO druckbar_ende
- ENDIF
- ENDIF
- IF block!
- IF wo%>=blockanfang% AND wo%<=blockende%
- PRINT CHR$(27)+"p";
- ELSE
- PRINT CHR$(27)+"q";
- ENDIF
- ENDIF
- anzahl_zeilen%=MAX(anzahl_zeilen%,nr%)
- laenge|=LEN(zeile$(nr%))
- IF laenge|<sp|-1
- zeile$(nr%)=zeile$(nr%)+SPACE$(sp|-laenge|-1)
- ENDIF
- IF LEN(zeile$(nr%))<=zlen%-1
- IF insertmode!
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|-1)+taste$+MID$(zeile$(nr%),sp|)
- PRINT MID$(zeile$(nr%),sp|);
- PRINT AT(sp|+1,zp|);
- ELSE
- IF sp|>laenge|
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|)+taste$+MID$(zeile$(nr%),sp|)
- ELSE
- MID$(zeile$(nr%),sp|)=taste$
- ENDIF
- PRINT taste$;
- ENDIF
- ELSE
- IF sp|<zlen%
- @format_zurueck
- PRINT AT(sp|+1,zp|);
- ELSE
- @trenn
- ENDIF
- ENDIF
- druckbar_ende:
- @positionen
- RETURN
- > PROCEDURE kommando1
- LOCAL sp|,zp|,bild_oben$,gehe_in$,i|,alti|,raus!,spa|,laenge|
- kommandocode%=ASC(taste$)
- umschalt%=BIOS(11,-1)
- '
- IF kommandocode%=16 ! Control+P: Druckereinstellung
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT CHR$(27)+"f";
- @einstellung_grafik
- @einstellung_select
- @ausgabe_ab_zeile(oberste%+1)
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,zp|);
- ENDIF
- '
- IF kommandocode%=9 AND umschalt%=4 OR umschalt%=20 ! Control+I: Invertieren des Bildschirms
- ' ! mit umschalt% sonst wie TAB
- IF invers!
- SETCOLOR 0,7,7,7
- invers!=FALSE
- ELSE
- SETCOLOR 0,0,0,0
- invers!=TRUE
- ENDIF
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=4 ! Control+D: Text drucken
- @text_drucken
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=6 ! Control+F: Text suchen
- IF suchstring$<>""
- @suchen_ab((oberste%-2)+CRSLIN+1)
- ENDIF
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=7 ! Control+G
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- GET 0,0,639,20,bild_oben$
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT AT(1,1);SPACE$(zlen%-1);
- LINE 0,18,639,18
- LINE 0,19,639,19
- PRINT AT(1,1);"Gehe zu Seite: "
- PRINT AT(16,1);
- FORM INPUT 5,gehe_in$
- gehe_in$=STR$((VAL(gehe_in$)-1)*seitelen%)
- IF VAL(gehe_in$)=0
- gehe_in$="1"
- ENDIF
- PUT 0,0,bild_oben$
- PRINT CHR$(27)+"e"; ! Cursor einschalten
- IF VAL(gehe_in$)<1 OR VAL(gehe_in$)>max_zeilen%
- ALERT 1,"Diese Seite|existiert nicht.",1," Return ",a%
- PRINT AT(1,3);
- ELSE
- oberste%=VAL(gehe_in$)-1
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(1,3);
- ENDIF
- @statuszeile
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=9 ! Tabulator anspringen
- sp|=CRSCOL
- zp|=CRSLIN
- i|=sp|
- alti|=i|
- raus!=FALSE
- REPEAT
- IF i|<zlen%-1
- INC i|
- ELSE
- raus!=TRUE
- i|=alti|
- ENDIF
- UNTIL tabulator!(i|)=TRUE OR raus!=TRUE
- sp|=i|
- PRINT AT(sp|,zp|);
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=18 ! Control+R: suchen und ersetzen
- IF suchstring$<>""
- @ersetzen_ab((oberste%-2)+CRSLIN)
- ENDIF
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=20 ! Control+T: Tabulator setzen/löschen
- sp|=CRSCOL
- tabulator!(sp|)=NOT (tabulator!(sp|))
- @tableiste
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=3 ! Control+C : Cursorgeschwindigkeit
- ALERT 2,"Welche Cursorgeschwindigkeit|wollen Sie einstellen ?",2,"Schnell|Mittel|Langsam",a|
- IF a|=3
- INC a|
- ENDIF
- VOID XBIOS(35,10,a|)
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=26 ! Control+Z: gehe ans Textende
- oberste%=MAX(1,anzahl_zeilen%-24)+2
- @ausgabe_ab_zeile(oberste%+1)
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=8 ! Backspace-Taste
- IF CRSCOL>1
- nr%=CRSLIN+(oberste%-2)
- IF LEN(zeile$(nr%))>=CRSCOL-2 AND LEN(zeile$(nr%))>=1
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT AT(sp|-1,zp|);MID$(zeile$(nr%),sp|);" ";
- PRINT AT(sp|-1,zp|);
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|-2)+MID$(zeile$(nr%),sp|)
- @format_absatz
- ELSE
- PRINT AT(CRSCOL-1,CRSLIN);
- ENDIF
- ELSE
- IF CRSLIN<4
- @scroll_runter
- PRINT AT(LEN(zeile$(oberste%+1)),3);
- ELSE
- IF LEN(zeile$(oberste%-3+CRSLIN))<zlen%
- a|=1
- ELSE
- a|=0
- ENDIF
- PRINT AT(a|+LEN(zeile$(oberste%-3+CRSLIN)),CRSLIN-1);
- ENDIF
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=13 ! Return-Taste: gehe an den Anfang der nächsten Zeile.
- nr%=oberste%-2+CRSLIN
- IF RIGHT$(zeile$(nr%))<>CHR$(174)
- zeile$(nr%)=zeile$(nr%)+CHR$(174)
- IF rechts! !rechtsbündig im Speicher
- zeile$(nr%)=TRIM$(zeile$(nr%))
- zeile$(nr%)=SPACE$(zlen%-LEN(zeile$(nr%)))+zeile$(nr%)
- ELSE IF zentre!
- zeile$(nr%)=TRIM$(zeile$(nr%))
- laenge|=LEN(zeile$(nr%))
- spa|=zlen%/2-(TRUNC(laenge|/2))
- zeile$(nr%)=SPACE$(spa|)+zeile$(nr%)
- ENDIF
- PRINT AT(1,CRSLIN);zeile$(nr%);
- ENDIF
- IF CRSLIN=24
- @scroll_rauf
- PRINT AT(1,24);
- ELSE
- PRINT AT(1,CRSLIN+1);
- ENDIF
- GOTO raus_hier
- ENDIF
- '
- IF kommandocode%=127 ! Delete-Taste
- nr%=CRSLIN+(oberste%-2)
- IF LEN(zeile$(nr%))>=CRSCOL
- zp|=CRSLIN
- sp|=CRSCOL
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|-1)+MID$(zeile$(nr%),sp|+1)
- PRINT MID$(zeile$(nr%),sp|);" ";
- PRINT AT(sp|,zp|);
- @format_absatz
- ENDIF
- ENDIF
- '
- IF kommandocode%=19 ! Control + S = Seitenformat einstellen
- @seite_zeigen !nformat
- ENDIF
- raus_hier:
- @positionen
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE kommando2
- LOCAL sp|,zp|,laenge|
- kommandocode%=ASC(RIGHT$(taste$))
- umschalt%=BIOS(11,-1) AND 8
- '
- IF kommandocode%=72 ! Cursor rauf
- scrol!=FALSE
- IF CRSLIN=3
- @scroll_runter
- ELSE
- PRINT CHR$(27)+"A";
- ENDIF
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=80 ! Cursor runter
- scrol!=TRUE
- anz%=oberste%-2+CRSLIN
- anzahl_zeilen%=MAX(anz%,anzahl_zeilen%)
- IF CRSLIN=24
- @scroll_rauf
- ELSE
- PRINT CHR$(27)+"B";
- ENDIF
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- '
- IF kommandocode%=77 ! Cursor rechts
- IF CRSCOL<1+LEN(zeile$(oberste%-2+CRSLIN)) !zlen%
- PRINT CHR$(27)+"C";
- @positionen
- ELSE
- IF CRSLIN>23
- @scroll_rauf
- PRINT AT(1,24);
- ELSE
- PRINT AT(1,CRSLIN+1);
- ENDIF
- ENDIF
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=75 ! Cursor links
- IF CRSCOL>1
- PRINT CHR$(27)+"D";
- @positionen
- ELSE
- IF CRSLIN<4
- @scroll_runter
- PRINT AT(LEN(zeile$(oberste%+1)),3);
- ELSE
- IF LEN(zeile$(oberste%-3+CRSLIN))<zlen%
- a|=1
- ELSE
- a|=0
- ENDIF
- PRINT AT(a|+LEN(zeile$(oberste%-3+CRSLIN)),CRSLIN-1);
- ENDIF
- ENDIF
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=59 ! F1
- @text_laden
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=60 ! F2
- @text_speichern
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=61 ! F3
- @zeile_einfuegen
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=62 ! F4
- @zeile_loeschen
- GOTO ausstieg_aus_procedure
- ENDIF
- '
- IF kommandocode%=63 ! F5
- sp|=CRSCOL
- zp|=CRSLIN
- links!=TRUE
- rechts!=FALSE
- blocksatz!=FALSE
- zentre!=FALSE
- PRINT AT(27,1);"Links "
- PRINT AT(sp|,zp|);
- ENDIF
- '
- IF kommandocode%=64 ! F6
- sp|=CRSCOL
- zp|=CRSLIN
- links!=FALSE
- rechts!=TRUE
- blocksatz!=FALSE
- zentre!=FALSE
- PRINT AT(27,1);"Recht "
- PRINT AT(sp|,zp|);
- ENDIF
- '
- IF kommandocode%=65 ! F7
- sp|=CRSCOL
- zp|=CRSLIN
- links!=FALSE
- rechts!=FALSE
- blocksatz!=FALSE
- zentre!=TRUE
- PRINT AT(27,1);"Zentr "
- PRINT AT(sp|,zp|);
- ENDIF
- '
- IF kommandocode%=66 ! F8
- sp|=CRSCOL
- zp|=CRSLIN
- links!=FALSE
- rechts!=FALSE
- blocksatz!=TRUE
- zentre!=FALSE
- PRINT AT(27,1);"Blocks"
- PRINT AT(sp|,zp|);
- ENDIF
- '
- IF kommandocode%=67 ! F9
- @nochmal
- ENDIF
- '
- IF kommandocode%=68 ! F10
- nr%=oberste%-2+CRSLIN
- IF RIGHT$(zeile$(nr%))=CHR$(174)
- p%=nr%
- ELSE
- FOR i%=nr% TO anzahl_zeilen%
- IF RIGHT$(zeile$(i%))=CHR$(174)
- p%=i%
- ENDIF
- EXIT IF p%>0
- NEXT i%
- ENDIF
- @textformat(nr%,p%)
- ENDIF
- '
- IF kommandocode%=97 ! Undo-Taste für aktuellen Text löschen
- ENDIF
- '
- IF kommandocode%=98 ! Help-Taste für Anzeige der Editorkommandos
- ENDIF
- '
- '
- IF kommandocode%=84 ! Shift+F1: Blockanfang markieren
- @block_anfang
- ENDIF
- '
- IF kommandocode%=85 ! Shift+F2: Blockende markieren
- @block_ende
- ENDIF
- '
- IF kommandocode%=86 ! Shift+F3: Block kopieren
- @block_kopieren
- ENDIF
- '
- IF kommandocode%=87 ! Shift+F4: Block verschieben
- @block_verschieben
- ENDIF
- '
- IF kommandocode%=88 ! Shift+F5: Block speichern
- @block_speichern
- ENDIF
- '
- IF kommandocode%=89 ! Shift+F6: Block mergen
- @block_mergen
- ENDIF
- '
- IF kommandocode%=90 ! Shift+F7: Block drucken
- @block_drucken
- ENDIF
- '
- IF kommandocode%=91 ! Shift+F8: Block löschen
- @block_loeschen
- ENDIF
- '
- IF kommandocode%=92 ! Shift+F9: Blockmarkierung aufheben
- @block_markierung
- ENDIF
- '
- IF kommandocode%=93 ! Shift F10: Umschalten auf zweiten Textspeicher!
- ENDIF
- '
- IF kommandocode%=116 ! Control+Cursor rechts, springe ans Zeilenende
- nr%=(oberste%-2)+CRSLIN
- laenge|=LEN(zeile$(nr%))
- IF laenge|<zlen%
- INC laenge|
- ENDIF
- PRINT AT(laenge|,CRSLIN);
- @positionen
- ENDIF
- '
- IF kommandocode%=115 ! Control+Cursor links, springe an Zeilenanfang
- PRINT AT(1,CRSLIN);
- ENDIF
- '
- IF kommandocode%=71 ! Home-Taste
- PRINT AT(1,3);
- ENDIF
- '
- IF kommandocode%=82 ! Insert-Taste Leerstelle einfügen
- @zeile_einfuegen
- ENDIF
- '
- IF kommandocode%=119 ! Control+Home
- @text_anfang
- ENDIF
- ausstieg_aus_procedure:
- @positionen
- RETURN
- > PROCEDURE scroll_rauf
- LOCAL sp|
- IF oberste%+22=<max_zeilen%
- INC oberste%
- sp|=CRSCOL
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- BMOVE XBIOS(3)+3840,XBIOS(3)+2560,26880 !28160
- IF block!
- IF oberste%+22>=blockanfang% AND oberste%+22<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT AT(1,24);CHR$(27)+"e";CHR$(27)+"l";zeile$(oberste%+22);
- PRINT AT(sp|,CRSLIN);
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- RETURN
- > PROCEDURE scroll_runter
- LOCAL sp|
- IF oberste%>0
- DEC oberste%
- sp|=CRSCOL
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- BMOVE XBIOS(3)+2560,XBIOS(3)+3840,26880 !29440 !28160
- IF block!
- IF oberste%+1>=blockanfang% AND oberste%+1<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT AT(1,3);CHR$(27)+"e";CHR$(27)+"l";zeile$(oberste%+1);
- PRINT AT(sp|,CRSLIN);
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- RETURN
- > PROCEDURE ausgabe_ab_zeile(nr%)
- LOCAL bis%
- @cl_s
- IF anzahl_zeilen%>0
- bis%=MIN(nr%+21,anzahl_zeilen%)
- IF nr%=anzahl_zeilen%
- IF block!
- IF nr%>=blockanfang% AND nr%<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT zeile$(nr%)
- ENDIF
- IF nr%<anzahl_zeilen%
- IF bis%>nr%
- FOR i%=nr% TO bis%-1
- IF block!
- IF i%>=blockanfang% AND i%<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT zeile$(i%) ! Ausgeben mit Linefeed
- IF seiten!(i%)=TRUE
- ' LINE 0,(1+i%-nr%)*ch%,639,(1+i%-nr%)*ch%
- LINE 0,(2+i%-nr%)*ch%-1,639,(2+i%-nr%)*ch%-1
- ENDIF
- NEXT i%
- ENDIF
- IF block!
- IF bis%>=blockanfang% AND bis%<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT zeile$(bis%); ! Letzte Zeile ohne Linefeed ausgeben.
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE plaziere_cursor
- LOCAL mark!,sp|,zp|,cx|,cy|,mx%,my%,anx%,any%
- zp|=INT(MOUSEY/16)+1
- IF zp|>2
- sp|=INT(MOUSEX/8)+1
- anx%=MOUSEX
- any%=MOUSEY
- blockanfang%=(oberste%-2)+zp|
- PRINT AT(sp|,zp|);
- GRAPHMODE 3
- DEFLINE 1,1,0,0
- BOX 639,399,640,400
- mx%=MOUSEX
- my%=MOUSEY
- WHILE MOUSEK=3
- IF mx%<>MOUSEX OR my%<>MOUSEY ! verhindert Flimmern des Cursors
- cx|=MOUSEX/8+1
- cy|=MOUSEY/16+1
- PRINT AT(cx|,cy|);
- IF cy|>blockanfang% AND cy|<3
- @scroll_runter
- ENDIF
- IF cy|=>24
- @scroll_rauf
- ENDIF
- BOX anx%,any%,mx%,my%
- BOX anx%,any%,mx%,my%
- mx%=MOUSEX
- my%=MOUSEY
- ENDIF
- WEND
- PRINT CHR$(27)+"f";
- blockende%=(oberste%-2)+INT(MOUSEY/16)+1
- IF blockende%>=blockanfang%
- block!=TRUE
- ELSE
- block!=FALSE
- ENDIF
- GRAPHMODE 1
- @ausgabe_ab_zeile(oberste%+1)
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,zp|);
- ENDIF
- @statuszeile
- RETURN
- > PROCEDURE cursor_setzen
- LOCAL sp|,zp|,mx%,my%
- zp|=INT(MOUSEY/16)+1
- sp|=INT(MOUSEX/8)+1
- IF zp|>2 AND zp|<25
- IF sp|<=zlen%
- PRINT AT(sp|,zp|);
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE suchen_ab(zeile%)
- LOCAL found!,p|
- found!=FALSE
- IF zeile%<=anzahl_zeilen%
- FOR i%=zeile% TO anzahl_zeilen%
- p|=INSTR(zeile$(i%),suchstring$)
- IF p|<>0
- found!=TRUE
- ENDIF
- EXIT IF found!
- NEXT i%
- ENDIF
- IF found!
- oberste%=MAX(0,i%-1)
- @ausgabe_ab_zeile(i%)
- PRINT AT(p|,3);
- ELSE
- oberste%=MAX(0,anzahl_zeilen%-24)
- @ausgabe_ab_zeile(oberste%+1)
- ALERT 1,"Suchstring nicht gefunden.",1," Return ",a%
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE ersetzen_ab(zeile%)
- LOCAL found!,found_at%,p|,wo|
- found!=FALSE
- IF zeile%<=anzahl_zeilen%
- FOR i%=zeile% TO anzahl_zeilen%
- wo|=INSTR(zeile$(i%),suchstring$)
- IF wo|<>0
- found!=TRUE
- ENDIF
- EXIT IF found!
- NEXT i%
- ENDIF
- found_at%=i%
- IF found!
- IF LEN(zeile$(i%))+LEN(ersatzstring$)-LEN(suchstring$)>zlen%
- ALERT 1,"Ersetzen nicht möglich,|Ersatzstring ist zu lang.",1," Return ",a%
- ELSE
- nr%=i%
- zeile$(nr%)=LEFT$(zeile$(nr%),wo%-1)+ersatzstring$+MID$(zeile$(nr%),wo%+LEN(suchstring$))
- ENDIF
- oberste%=i%-1
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(wo|,3);
- ELSE
- oberste%=MAX(0,anzahl_zeilen%-24)
- @ausgabe_ab_zeile(oberste%+1)
- ALERT 1,"Suchstring nicht gefunden.",1," Return ",a%
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE drucken(von%,bis%)
- LOCAL z|,se$,i1|,dzeile$,restseite%,a|,kopfzeile$,fusszeile$,zeiger%
- zeiger%=von%
- i%=1
- IF GEMDOS(17)
- '
- ' erstellen von kopf und Fußzeilen
- '
- IF kopfl$<>"" OR kopfm$<>"" OR kopfr$<>""
- @seitenummer_drucken(kopfl$)
- @seitenummer_drucken(kopfm$)
- @seitenummer_drucken(kopfr$)
- kopfzeile$=kopfl$+SPACE$(25-LEN(kopfl$))
- kopfzeile$=kopfzeile$+SPACE$(12-LEN(kopfm$)/2)+kopfm$+SPACE$(12-LEN(kopfm$)/2)
- kopfzeile$=kopfzeile$+SPACE$(25-LEN(kopfr$))+kopfr$
- @zeile_testen(kopfzeile$)
- ENDIF
- IF fussl$<>"" OR fussm$<>"" OR fussr$<>""
- @seitenummer_drucken(fussl$)
- @seitenummer_drucken(fussm$)
- @seitenummer_drucken(fussr$)
- fusszeile$=fussl$+SPACE$(25-LEN(fussl$))
- fusszeile$=fusszeile$+SPACE$(12-LEN(fussm$)/2)+fussm$+SPACE$(12-LEN(fussm$)/2)
- fusszeile$=fusszeile$+SPACE$(25-LEN(fussr$))+fussr$
- @zeile_testen(fusszeile$)
- ENDIF
- OPEN "",#4,"LST:"
- REPEAT
- IF kopfob%>0 OR kopfzeile$<>""
- FOR i|=1 TO kopfob%
- PRINT #4,
- NEXT i|
- IF kopfzeile$<>""
- PRINT #4,druck$;kopfzeile$
- ENDIF
- ENDIF
- IF aboben%>0
- FOR i1|=1 TO aboben%
- PRINT #4,
- NEXT i1|
- ENDIF
- FOR i%=zeiger% TO zeiger%+seitelen%-1
- '
- ' Anzeigen der Seitennummer auf dem Bildschirm
- '
- IF seiten!(i%)
- se$=STR$(INT(i%/seitelen%)+1)
- TEXT 225,224,se$
- ENDIF
- '
- ' Abschneiden des Absatzzeichens
- '
- IF RIGHT$(zeile$(i%))=CHR$(174)
- dzeile$=LEFT$(zeile$(i%),LEN(zeile$(i%))-1)
- ELSE
- dzeile$=zeile$(i%)
- ENDIF
- '
- ' anpassen des Zeichensatzes an den Drucker
- '
- @zeile_testen(dzeile$)
- '
- ' Aktuelle Zeile 'DZEILE$' ausdrucken
- '
- IF par!(7) ! Zeile zweimal drucken
- PRINT #4,SPACE$(lrand%);druck$;dzeile$;CHR$(13);CHR$(27);"A";CHR$(0)
- PRINT #4,SPACE$(lrand%);dzeile$;CHR$(27);"A";CHR$(11)
- ELSE ! Zeile einmal drucken
- PRINT #4,SPACE$(lrand%);druck$;dzeile$
- ENDIF
- NEXT i%
- '
- ' Fußzeile Ausgeben
- '
- IF fuss%>0 OR fusszeile$<>""
- FOR i|=1 TO fuss%
- PRINT #4,
- NEXT i|
- IF fusszeile$<>""
- PRINT #4,druck$;fusszeile$
- ENDIF
- ENDIF
- '
- ' Abstand von unten ausgeben
- '
- IF abunten%>0
- FOR i1|=1 TO abunten%
- PRINT #4,
- NEXT i1|
- ENDIF
- '
- ' Zeiger auf den nächsten Seitenanfang stellen
- '
- ADD zeiger%,seitelen%
- '
- ' ist noch eine Seite zu drucken ? Ja dann neues Blatt einlegen
- '
- IF zeiger%<bis%
- REPEAT
- ALERT 1,"Bitte ein neues Blatt |einlegen ",1," Okay | Abbruch",a|
- UNTIL GEMDOS(17) OR a|=2
- DEFMOUSE pfeil$
- ENDIF
- UNTIL zeiger%>bis% OR a|=2
- ELSE
- ALERT 1,"Machen Sie zuerst|Ihren Drucker bereit.",1," Return ",a%
- ENDIF
- CLOSE #4
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE fehlerabfanger
- LOCAL a|
- ALERT 3,"Ein programminterner Fehler|ist aufgetreten (Code: "+STR$(ERR)+")|Wollen Sie Ihren Text ab-|speichern ?",1," Nein | Ja ",a|
- IF a|=2
- IF anzahl_zeilen%>0
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- @cl_s
- BOX 157,29,482,53
- BOX 159,31,480,51
- TEXT 263,47,"Text speichern"
- @text_speichern_als
- ELSE
- ALERT 1,"Es ist noch kein Text für|eine Speicherung verfügbar !",1," Return ",a|
- ENDIF
- ENDIF
- ALERT 2,"Soll der Versuch gemacht|werden, mit dem Programm|fortzufahren ?",1," Nein | Ja ",a|
- IF a|=1
- END
- ELSE
- oberste%=0
- @ausgabe_ab_zeile(1)
- PRINT AT(1,3);
- ON ERROR GOSUB fehlerabfanger
- RESUME NEXT
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE stoppen
- ALERT 1,"Na Na Na! Beendet man|denn SO ein programm?|Mit ESC-D-Q geht es doch|auch! SPEICHERN !!!",1," DUMP | Wieter | Raus ",a|
- IF a|=1
- DUMP "DUMP.DMP"
- ELSE IF a|=3
- ALERT 1,"Text noch Speichern?",1,"Ja|Nein",a|
- IF a|=1
- @text_speichern
- ENDIF
- EDIT
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE divide_long_lines(anzahl%)
- WHILE LEN(zeile$(anzahl%))>zlen% AND anzahl%<max_zeilen%
- z$=zeile$(anzahl%)
- zeile$(anzahl%)=LEFT$(z$,zlen%)
- INC anzahl%
- zeile$(anzahl%)=MID$(z$,zlen%+1)
- WEND
- RETURN
- > PROCEDURE pfad_merken
- IF filename$<>""
- pfad$=filename$
- IF RIGHT$(pfad$)<>"\"
- FOR i%=LEN(filename$) DOWNTO 1
- pfad$=LEFT$(pfad$,LEN(pfad$)-1)
- EXIT IF RIGHT$(pfad$)="\"
- NEXT i%
- pfad$=pfad$+"*.TXT"
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE statuszeile
- LOCAL p|,p1|,n$,ext$,zp|,sp|,raus!
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT AT(1,1);"Name:________.___ I B Links Zeile: 1 Spalte: 1 Seite: 1"
- @tableiste
- PRINT CHR$(27)+"q";
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- filename$=UPPER$(filename$)
- raus!=FALSE
- p|=RINSTR(filename$,".")
- p1|=RINSTR(filename$,"\")
- n$=MID$(filename$,p1|+1,p|-(p1|+1))
- n$=n$+SPACE$(8-LEN(n$))
- ext$=RIGHT$(filename$,3)
- ENDIF
- PRINT AT(6,1);n$;AT(15,1);ext$
- IF block!
- PRINT AT(23,1);"B"
- ELSE
- PRINT AT(23,1);" "
- ENDIF
- @positionen
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE positionen
- LOCAL zp|,sp|,z$,s$,z%,s%,se%,altse$
- PRINT CHR$(27)+"q";
- IF block!
- wo%=(oberste%-2)+CRSLIN
- IF wo%>blockanfang% AND wo%<blockende%
- PRINT CHR$(27)+"p";
- ELSE
- PRINT CHR$(27)+"q";
- ENDIF
- ENDIF
- PRINT CHR$(27)+"f";
- zp|=CRSLIN
- sp|=CRSCOL
- altse$=se$
- s%=CRSCOL
- s$=STR$(s%,2)
- z%=oberste%-2+CRSLIN
- z$=STR$(z%,4)
- '
- ' seitengrenze Normal
- '
- ' IF z%>0
- IF seiten!(z%+1)=TRUE
- LINE 0,(zp|)*ch%-1,639,(zp|)*ch%-1
- ENDIF
- ' ENDIF
- se|=1+INT((z%-1)/seitelen%)
- se$=STR$(se|,4)
- PRINT AT(50,1);z$;AT(64,1);s$;AT(76,1);se$
- IF BIOS(11,-1)=16
- PRINT AT(25,1);"©"
- ELSE
- PRINT AT(25,1);" "
- ENDIF
- IF block!
- wo%=(oberste%-2)+CRSLIN
- IF wo%>blockanfang% AND wo%<blockende%
- PRINT CHR$(27)+"p";
- ELSE
- PRINT CHR$(27)+"q";
- ENDIF
- ENDIF
- PRINT CHR$(27);"e";
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE tableiste
- LOCAL sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- PRINT AT(1,2);CHR$(27);"K";
- PRINT AT(1,2);">"
- FOR i|=1 TO zlen%
- IF tabulator!(i|)
- PRINT AT(i|,2);"+";
- ELSE
- PRINT AT(i|,2);"-"
- ENDIF
- NEXT i|
- PRINT AT(zlen%+1,2);"<";
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE cl_s
- DEFFILL 0
- PBOX 0,30,639,382
- PRINT AT(1,3);
- RETURN
- > PROCEDURE page_up
- LOCAL sp|,zp|
- PRINT CHR$(27)+"f";
- IF oberste%>0
- zp|=CRSLIN
- sp|=CRSCOL
- IF oberste%<20
- oberste%=0
- @ausgabe_ab_zeile(1)
- ELSE
- SUB oberste%,20
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- PRINT AT(sp|,zp|);
- ELSE
- PRINT AT(1,3);CHR$(7); ! Fehlerglocke falls keine Seite mehr vorhanden
- ENDIF
- PRINT CHR$(27)+"e";
- RETURN
- > PROCEDURE page_down
- LOCAL sp|,zp|
- PRINT CHR$(27)+"f";
- IF oberste%<max_zeilen%-23
- zp|=CRSLIN
- sp|=CRSCOL
- IF oberste%>max_zeilen%-44
- oberste%=max_zeilen%-23
- @ausgabe_ab_zeile(oberste%+1)
- ELSE
- ADD oberste%,20
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- PRINT AT(sp|,zp|);
- ELSE
- PRINT AT(1,3);CHR$(7); ! Fehlerglocke, falls keine Seite mehr vorhanden
- ENDIF
- PRINT CHR$(27)+"e";
- RETURN
- > PROCEDURE menueleiste
- PUT 0,384,men$
- RETURN
- > PROCEDURE mauslesen
- '
- ' Mouse-Daten in einen String umwandeln
- RESTORE mauspfeil
- LET pfeil$=MKI$(0)+MKI$(0)+MKI$(1)
- LET pfeil$=pfeil$+MKI$(0)+MKI$(1)
- FOR i|=1 TO 16
- READ hinten%
- LET pfeil$=pfeil$+MKI$(hinten%)
- NEXT i|
- FOR i|=1 TO 16
- READ vorn%
- LET pfeil$=pfeil$+MKI$(vorn%)
- NEXT i|
- mauspfeil:
- DATA 61440,39936,34560,49600,16496,24604,8196,12412,4128,6416,2440,3399,1312,1809,18,20
- DATA 32768,24576,30720,15872,16256,8160,8184,3968,4032,1760,1648,568,543,14,12,8
- ' DEFMOUSE pfeil$
- '
- ' Daten für Sprite : CRS$(2,1)
- '
- crs1$=MKI$(8)+MKI$(8)+MKI$(0)+MKI$(0)+MKI$(1)
- FOR i|=1 TO 16
- crs1$=crs1$+MKI$(0)
- NEXT i|
- FOR i|=1 TO 16
- READ s%
- crs1$=crs1$+MKI$(s%)
- NEXT i|
- DATA 32766,32766,24582,24582
- DATA 24582,24582,24582,24582
- DATA 24582,24582,24582,24582
- DATA 24582,24582,32766,32766
- SWAP pfeil$,crs1$
- DEFMOUSE pfeil$
- '
- RETURN
- > PROCEDURE anfang
- DEFFILL 1,2,4
- PBOX 0,0,639,399
- DEFFILL 0
- PBOX 99,48,501,351
- GRAPHMODE 3
- DEFFILL 1,2,8
- PBOX 100,49,500,350
- DEFTEXT 1,1,0,32
- TEXT 120,90,350,"ISE-Software"
- DEFTEXT 1,4,0,6
- TEXT 120,100,350,"Intelligent - Exclusive - Sinnvoll"
- TEXT 120,120,350,"K-H Wallon C.Hörner"
- TEXT 120,130,350,"06424/4504 05605/4319"
- DEFTEXT 1,0,0,13
- TEXT 210,150,200,"presentiert"
- DEFTEXT 1,5,0,13
- TEXT 150,170,300,"TEXTWRITER ST V 2.4"
- DEFTEXT 1,0,0,6
- TEXT 200,190,"1989 - Public Domain - 1989"
- TEXT 120,205,"verbessert von: Grundprg: TED"
- TEXT 120,220," K-H Wallon aus dem Buch"
- TEXT 120,230," Leidenhofenerstraße 25 GFA-Basic -"
- TEXT 120,240," 3557 Ebsdorfergrund 6 Programmierung"
- TEXT 120,250," Tel.0 64 24/45 04 von G.P. Engels"
- DRAW 120,260 TO 220,260 TO 170,340 TO 120,260
- DRAW 380,260 TO 480,260 TO 430,340 TO 380,260
- DEFTEXT 1,0,0,32
- TEXT 150,290,"I"
- TEXT 410,290,"I"
- TEXT 180,290,"E"
- TEXT 440,290,"E"
- TEXT 165,320,"S"
- TEXT 425,320,"S"
- PAUSE 10
- GRAPHMODE 1
- DO
- GET 100,50,500,51,t$
- RC_COPY XBIOS(3),100,51,400,298 TO XBIOS(3),100,50
- PUT 100,348,t$
- EXIT IF INKEY$<>""
- LOOP
- CLR t$
- DEFTEXT 1,0,0,13
- RETURN
- > PROCEDURE zeilenlaenge
- LOCAL bild_oben$,zl$,flg!,sp|,zp|,a|
- PRINT CHR$(27)+"f";
- GET 0,0,639,15,bild_oben$
- nr%=oberste%-2+CRSLIN
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT AT(1,1);SPACE$(zlen%);
- zlen_nochmal:
- PRINT AT(1,1);"Neue Zeilenlänge : "
- PRINT AT(20,1);
- FORM INPUT 5 AS zl$
- IF VAL(zl$)>79
- ALERT 3,"Dies Maximale Zeilenlänge|liegt bei 80 Zeichen!",1,"Return",a|
- GOTO zlen_nochmal
- ELSE
- IF VAL(zl$)<zlen%
- zlen%=VAL(zl$)
- @textformat(1,anzahl_zeilen%)
- ENDIF
- zlen%=VAL(zl$)
- @tableiste
- @cl_s
- @ausgabe_ab_zeile(nr%)
- ENDIF
- PUT 0,0,bild_oben$
- PRINT CHR$(27)+"e";
- CLR bild_oben$
- CLR zl$
- DEFMOUSE pfeil$
- RETURN
- ' ---------------------------------------------------------------------------
- ' Menüeinbau
- ' ---------------------------------------------------------------------------
- > PROCEDURE rsc_load
- LOCAL rsc$,gef!
- CLR rsc$
- ~RSRC_FREE()
- PRINT AT(1,1);" Moment : Ich lade das RSC-File 'TEXTWRIT.RSC' in den Speicher ! Bitte Geduld ! ";
- rsc_nochmal:
- IF EXIST("TEXTWRIT.RSC")
- rsc$="TEXTWRIT.RSC"
- ELSE IF EXIST("TEXTEDIT\TEXTWRIT.RSC")
- rsc$="TEXTEDIT\TEXTWRIT.RSC"
- ELSE IF rsc$=""
- ALERT 3,"Das RSC-Files TEXTWRIT.RSC|habe ich nicht gefunden!|Bitte den Namen wählen:",1," Okay ",a|
- FILESELECT "\*.RSC",rsc$,rsc$
- IF RIGHT$(rsc$,3)<>"RSC"
- ALERT 3,"Dies ist kein richtiges|RSC-File",1,"Return",a|
- GOTO rsc_nochmal
- ENDIF
- ENDIF
- gef!=RSRC_LOAD(rsc$)
- IF NOT gef!
- ALERT 2," Was war denn das ?|Ich habe das File nicht|richtig geladen!|Name FALSCH ???",1,"Nochmal|Abbruch",a|
- IF a|=1
- GOTO rsc_nochmal
- ELSE
- EDIT
- ENDIF
- ENDIF
- ~RSRC_GADDR(0,disk&,r_disk%)
- ~RSRC_GADDR(0,block&,r_block%)
- ~RSRC_GADDR(0,arbeit&,r_arbeit%)
- ~RSRC_GADDR(0,scroll&,r_scroll%)
- ~RSRC_GADDR(0,einstell&,r_einstell%)
- ~RSRC_GADDR(0,textattr&,r_textattr%)
- ~RSRC_GADDR(0,hinlade&,r_hinlade%)
- ~RSRC_GADDR(0,hinsave&,r_hinsave%)
- ~RSRC_GADDR(0,hinende&,r_hinende%)
- ~RSRC_GADDR(0,loeschen&,r_loeschen%)
- ~RSRC_GADDR(0,dformat&,r_dformat%)
- ~RSRC_GADDR(0,hindruck&,r_hindruck%)
- ~RSRC_GADDR(0,bild&,r_bild%)
- ~RSRC_GADDR(0,ordner&,r_ordner%)
- ~RSRC_GADDR(0,laufwerk&,r_laufwerk%)
- ~RSRC_GADDR(0,suchetex&,r_suchetex%)
- ~RSRC_GADDR(0,erstext&,r_erstext%)
- ~RSRC_GADDR(0,textform&,r_textform%)
- ~RSRC_GADDR(0,seitefrm&,r_seitenform%)
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE rsc_init
- LET disk&=0 !RSC_TREE
- LET block&=1 !RSC_TREE
- LET arbeit&=2 !RSC_TREE
- LET scroll&=3 !RSC_TREE
- LET einstell&=4 !RSC_TREE
- LET textattr&=5 !RSC_TREE
- LET hinlade&=6 !RSC_TREE
- LET hinsave&=7 !RSC_TREE
- LET hinende&=8 !RSC_TREE
- LET loeschen&=9 !RSC_TREE
- LET dformat&=10 !RSC_TREE
- LET hindruck&=11 !RSC_TREE
- LET bild&=12 !RSC_TREE
- LET ordner&=13 !RSC_TREE
- LET laufwerk&=14 !RSC_TREE
- LET suchetex&=15 !RSC_TREE
- LET erstext&=16 !RSC_TREE
- LET textform&=17 !RSC_TREE
- LET seitefrm&=18 !RSC_TREE
- LET tladen&=2 !Obj in #0
- LET tsave&=3 !Obj in #0
- LET tsaveas&=4 !Obj in #0
- LET tdruck&=5 !Obj in #0
- LET neuord&=7 !Obj in #0
- LET fileweg&=8 !Obj in #0
- LET formdisk&=9 !Obj in #0
- LET laufwech&=10 !Obj in #0
- LET nameaend&=11 !Obj in #0
- LET prgende&=13 !Obj in #0
- LET banf&=2 !Obj in #1
- LET bende&=3 !Obj in #1
- LET bladen&=5 !Obj in #1
- LET bsave&=6 !Obj in #1
- LET bkopy&=8 !Obj in #1
- LET bver&=9 !Obj in #1
- LET bloesh&=10 !Obj in #1
- LET bdruck&=11 !Obj in #1
- LET bmark&=12
- LET insert&=2 !Obj in #2
- LET owert&=3 !Obj in #2
- LET zeinf&=5 !Obj in #2
- LET zloesch&=6 !Obj in #2
- LET ztrenn&=7 !Obj in #2
- LET zjoin&=8 !Obj in #2
- LET suche&=10 !Obj in #2
- LET ersetze&=11 !Obj in #2
- LET nochmal&=12 !Obj in #2
- LET texform&=13 !Obj in #2
- LET setmar1&=15 !Obj in #2
- LET gomar1&=16 !Obj in #2
- LET setmar2&=17 !Obj in #2
- LET gomar2&=18 !Obj in #2
- LET setmar3&=19 !Obj in #2
- LET gomar3&=20 !Obj in #2
- LET shoch&=2 !Obj in #3
- LET srunter&=3 !Obj in #3
- LET srechts&=4 !Obj in #3
- LET slinks&=5 !Obj in #3
- LET zhoch&=6 !Obj in #3
- LET zrunter&=7 !Obj in #3
- LET seianf&=8 !Obj in #3
- LET tanf&=9 !Obj in #3
- LET tende&=10 !Obj in #3
- LET seiform&=2 !Obj in #4
- LET zeiform&=3 !Obj in #4
- LET drkform&=4 !Obj in #4
- LET drkanp&=5 !Obj in #4
- LET ascmod&=6 !Obj in #4
- LET twmod&=7 !Obj in #4
- LET frei&=8 !Obj in #4
- LET trennan&=11 !Obj in #4
- LET trennaus&=12 !Obj in #4
- LET tgestalt&=13 !Obj in #4
- LET atrlinks&=2 !Obj in #5
- LET atrrecht&=3 !Obj in #5
- LET atrzentr&=4 !Obj in #5
- LET atrblock&=5 !Obj in #5
- LET sfett&=7 !Obj in #5
- LET sunter&=8 !Obj in #5
- LET skursiv&=9 !Obj in #5
- LET shell&=10 !Obj in #5
- LET sscript&=11 !Obj in #5
- LET ssup&=12 !Obj in #5
- LET endeja&=8 !Obj in #8
- LET endenein&=9 !Obj in #8
- LET mendisk&=2 !Obj in #12
- LET menblock&=3 !Obj in #12
- LET menarbei&=4 !Obj in #12
- LET menscrol&=5 !Obj in #12
- LET menattr&=6 !Obj in #12
- LET accs&=7 !Obj in #12
- LET meneinst&=8 !Obj in #12
- LET edordner&=3 !Obj in #13
- LET ordokay&=4 !Obj in #13
- LET ordabbr&=5 !Obj in #13
- LET sutext&=3 !Obj in #15
- LET suabbr&=5 !Obj in #15
- LET suokay&=6 !Obj in #15
- LET ersutext&=3 !Obj in #16
- LET erertext&=5 !Obj in #16
- LET ersokay&=7 !Obj in #16
- LET ersabbr&=8 !Obj in #16
- LET zformat&=7 !Obj in #17
- LET aformat&=8 !Obj in #17
- LET tformat&=9 !Obj in #17
- LET sfrmpl&=4 !Obj in #18
- LET sfrmak&=5 !Obj in #18
- LET sfrmao&=6 !Obj in #18
- LET sfrmau&=7 !Obj in #18
- LET sfrmaf&=8 !Obj in #18
- LET sfrmdrl&=10 !Obj in #18
- LET sfrmkol&=12 !Obj in #18
- LET sfrmkom&=13 !Obj in #18
- LET sfrmkor&=14 !Obj in #18
- LET sfrmful&=15 !Obj in #18
- LET sfrmfum&=16 !Obj in #18
- LET sfrmfur&=17 !Obj in #18
- LET sfrmtab&=19 !Obj in #18
- LET sfrmlr&=20 !Obj in #18
- LET sfrmrr&=21 !Obj in #18
- LET sfrmok&=23 !Obj in #18
- LET sfrmabbr&=24 !Obj in #18
- RETURN
- '
- > PROCEDURE menue(f!)
- LOCAL sp|,zp|,p|,t$,wahl%
- sp|=CRSCOL
- zp|=CRSLIN
- IF NOT f!
- TEXT 1,13,"ESC?"
- REPEAT
- t$=INKEY$
- UNTIL t$<>""
- IF LEN(t$)=2
- code|=(ASC(RIGHT$(t$)))-58
- IF code|>=1 AND code|<=10
- IF sp|+LEN(phr$(code|))<zlen%
- zeile$(oberste%-2+zp|)=LEFT$(zeile$(oberste%-2+zp|),sp|)+phr$(code|)
- PRINT AT(sp|,zp|);phr$(code|);CHR$(27)+"e";
- ELSE
- ALERT 3,"Der Text der auf dieser|Taste liegt passt nicht mehr|in die Zeile !",1,"Return",a|
- DEFMOUSE pfeil$
- ENDIF
- ENDIF
- ENDIF
- TEXT 1,13,"Name"
- p|=INSTR(menstr$,t$)
- IF p|
- ON p| GOSUB hpdisk,hpblock,hparbeit,hpscroll,hpattribute,hpaccs,hpeinstell,hpdisk,hpblock,hparbeit,hpscroll,hpattribute,hpaccs,hpeinstell
- ENDIF
- CLR t$
- ELSE
- '
- ' Mausklick -> dann auf Menüklick reagieren
- '
- wahl%=OBJC_FIND(r_bild%,0,7,MOUSEX,MOUSEY)
- IF wahl%>=mendisk& AND wahl%<=meneinst&
- ON wahl%-1 GOSUB hpdisk,hpblock,hparbeit,hpscroll,hpattribute,hpaccs,hpeinstell
- wahl%=0
- ENDIF
- ENDIF
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Disk
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpdisk
- LOCAL mx&,my&,mk|,x&,y&,b&,h&,t$,p|,temp$
- ~FORM_CENTER(r_disk%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_disk%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- MOUSE mx&,my&,mk|
- UNTIL t$<>"" OR mk|=1
- IF mk|=1
- w%=OBJC_FIND(r_disk%,0,7,mx&,my&)
- IF w%>=tladen& AND w%<=prgende&
- t$=MID$(diskstr$,w%-1,1)
- ENDIF
- ENDIF
- PUT x&,y&,temp$
- SELECT t$
- CASE "l","L"
- @text_laden
- CASE "s","S"
- @text_speichern
- CASE "a","A"
- @text_speichern_als
- CASE "p","P"
- @text_drucken
- CASE "o","O"
- @neuer_ordner
- CASE "f","F"
- @file_weg
- CASE "n","N"
- @name_aendern
- CASE "d","D"
- @disk_format
- CASE "w","W"
- @laufwerk_wechseln
- CASE "x","X"
- @text_loeschen
- CASE "q","Q"
- @prg_ende
- ENDSELECT
- RETURN
- > PROCEDURE text_laden
- LOCAL x&,y&,b&,h&,temp$,a|,laenge%,id$,anf%,posit%,rest%,durchgaenge%,tabul$,parameter|
- LOCAL ladestring$,anz%,p&,wo%
- IF anzahl_zeilen%>0
- ALERT 3,"Warnung! Das Laden eines neuen|Textes löscht den alten Text.|Wollen Sie das ?",1," Ja | Nein ",a|
- DEFMOUSE pfeil$
- ELSE
- a|=1
- ENDIF
- IF a|=1
- FOR i%=1 TO anzahl_zeilen%
- zeile$(i%)=""
- NEXT i%
- oberste%=0
- anzahl_zeilen%=0
- block!=FALSE
- blockanfang%=0
- blockende%=0
- ARRAYFILL seiten!(),FALSE
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- @cl_s
- @head(157,20,472,"Text Laden")
- FILESELECT pfad$,"",filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- ~FORM_CENTER(r_hinlade%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_hinlade%,0,7,0,0,640,400)
- OPEN "I",#1,filename$
- laenge%=LOF(#1)
- anf%=LOC(#1) ! Startadresse des Textes auf Disk
- INPUT #1,id$
- IF id$<>"TEXTWRITER ST"
- ALERT 1,"Keine TEXTWRITER-Text soll im|Word Plus Modus geladen|werden oder normal ?",1,"Normal| WP ",a|
- DEFMOUSE pfeil$
- SEEK #1,anf% ! Wenn kein TEXTWRITER-TEXT dann
- ' ! an den Anfang des Springen und alles Laden
- ELSE
- INPUT #1,zlen%
- INPUT #1,papierlen%
- INPUT #1,seitelen%
- INPUT #1,lrand%
- INPUT #1,rrand%
- INPUT #1,aboben%
- INPUT #1,abunten%
- INPUT #1,kopfob%
- INPUT #1,fuss%
- INPUT #1,tabulator%
- INPUT #1,kopfl$
- INPUT #1,kopfm$
- INPUT #1,kopfr$
- INPUT #1,fussl$
- INPUT #1,fussm$
- INPUT #1,fussr$
- INPUT #1,tabul$
- INPUT #1,parameter|
- FOR i|=1 TO zlen%
- IF MID$(tabul$,i|,1)="1"
- tabulator!(i|)=TRUE
- ELSE
- tabulator!(i|)=FALSE
- ENDIF
- NEXT i|
- FOR i|=1 TO 7
- IF BTST(parameter|,i|)
- par!(i|)=TRUE
- ELSE
- par!(i|)=FALSE
- ENDIF
- NEXT i|
- posit%=LOC(#1)
- laenge%=laenge%-(posit%-anf%)
- ENDIF
- OPTION BASE 0
- FOR i%=0 TO max_zeilen%-1 STEP seitelen%
- seiten!(i%)=TRUE
- NEXT i%
- FOR i|=0 TO seitelen%-1
- seiten!(i|)=FALSE
- NEXT i|
- OPTION BASE 1
- durchgaenge%=INT(laenge%/256)
- rest%=laenge% MOD 256
- ladestring$=""
- anz%=0
- i%=0
- IF durchgaenge%>0
- REPEAT
- INC i%
- durchgang$=INPUT$(256,#1) ! Hier werden die Bytes gelesen.
- IF a|=2
- REPEAT
- p&=INSTR(p&,durchgang$,CHR$(&H1E))
- IF p&
- MID$(durchgang$,p&,1)=CHR$(32)
- INC p&
- ENDIF
- UNTIL p&=0
- ENDIF
- ladestring$=ladestring$+durchgang$
- wo%=INSTR(ladestring$,CHR$(10))
- WHILE wo%>0 AND anz%<max_zeilen%
- INC anz%
- zeile$(anz%)=LEFT$(ladestring$,wo%-2) ! vor dem CR
- IF LEN(zeile$(anz%))>zlen%
- @divide_long_lines(anz%)
- ENDIF
- ladestring$=MID$(ladestring$,wo%+1) ! nach dem LF
- wo%=INSTR(ladestring$,CHR$(10))
- WEND
- UNTIL i%=durchgaenge% OR anz%>=max_zeilen%
- ENDIF
- IF rest%>0 AND anz%<max_zeilen%
- rest$=INPUT$(rest%,#1)
- ladestring$=ladestring$+rest$
- wo%=INSTR(ladestring$,CHR$(10))
- WHILE wo%>0 AND anz%<max_zeilen%
- INC anz%
- zeile$(anz%)=LEFT$(ladestring$,wo%-2) ! vor dem CR
- IF LEN(zeile$(anz%))>zlen%
- @divide_long_lines(anz%)
- ENDIF
- ladestring$=MID$(ladestring$,wo%+1) ! nach dem LF
- wo%=INSTR(ladestring$,CHR$(10))
- WEND
- ENDIF
- IF LEN(ladestring$)>0 AND anz%<max_zeilen%
- INC anz%
- zeile$(anz%)=ladestring$
- IF LEN(zeile$(anz%))>zlen%
- @divide_long_lines(anz%)
- ENDIF
- ENDIF
- IF anz%=max_zeilen%
- ALERT 1,"Diese Datei ist zu groß, um|vollständig geladen zu werden.",1," Return ",a%
- DEFMOUSE pfeil$
- anzahl_zeilen%=max_zeilen%-1
- ELSE
- anzahl_zeilen%=anz%
- ENDIF
- CLOSE #1
- PUT x&,y&,temp$
- ENDIF
- oberste%=0
- block!=FALSE
- blockanfang%=0
- blockende%=0
- ENDIF ! von Ok ohne Filename oder Abbruch
- @tableiste
- DEFMOUSE pfeil$
- @cl_s
- PRINT CHR$(27)+"e" ! Cursor einschalten
- @ausgabe_ab_zeile(1)
- @statuszeile
- PRINT AT(1,3);
- RETURN
- > PROCEDURE text_speichern
- LOCAL x&,y&,b&,h&,temp$,sp|,zp|
- IF anzahl_zeilen%>0
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- ~FORM_CENTER(r_hinsave%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_hinsave%,0,7,0,0,640,400)
- IF LEN(filename$)>1 AND RIGHT$(filename$,12)<>"TESTTEXT.TXT"
- OPEN "O",#1,filename$
- IF tw!=TRUE
- PRINT #1,"TEXTWRITER ST"
- PRINT #1,zlen%
- PRINT #1,papierlen%
- PRINT #1,seitelen%
- PRINT #1,lrand%
- PRINT #1,rrand%
- PRINT #1,aboben%
- PRINT #1,abunten%
- PRINT #1,kopfob%
- PRINT #1,fuss%
- PRINT #1,tabulator%
- PRINT #1,kopfl$
- PRINT #1,kopfm$
- PRINT #1,kopfr$
- PRINT #1,fussl$
- PRINT #1,fussm$
- PRINT #1,fussr$
- FOR i|=1 TO zlen%
- IF tabulator!(i|)
- tabul$=tabul$+"1"
- ELSE
- tabul$=tabul$+"0"
- ENDIF
- NEXT i|
- PRINT #1,tabul$
- FOR i|=1 TO 7
- IF par!(i|)
- parameter|=BSET(parameter|,i|)
- ELSE
- parameter|=BCLR(parameter|,i|)
- ENDIF
- NEXT i|
- PRINT #1,parameter|
- ENDIF
- FOR i%=1 TO anzahl_zeilen%
- IF asc!
- IF RIGHT$(zeile$(i%))=CHR$(174)
- zeile$(i%)=LEFT$(zeile$(i%),LEN(zeile$(i%))-1)
- ENDIF
- ENDIF
- PRINT #1,zeile$(i%)
- NEXT i%
- CLOSE #1
- ELSE
- ALERT 1,"Ich habe keinen Filenamen|TESTTEXT.TXT ist doch blöd!|Bitte mit ESC-D-A speichern!",1," Return ",a|
- ENDIF
- PUT x&,y&,temp$
- @cl_s
- PRINT CHR$(27)+"e" ! Cursor einschalten
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(sp|,zp|);
- @statuszeile
- ELSE
- ALERT 1,"Es ist noch kein Text für|eine Speicherung verfügbar !",1," Return ",a%
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE text_speichern_als
- LOCAL x&,y&,b&,h&,temp$,sp|,zp|
- IF anzahl_zeilen%>0
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- @cl_s
- @head(157,20,472,"Text Speichern")
- FILESELECT pfad$,filename$,filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- @text_speichern
- ENDIF
- ELSE
- ALERT 1,"Es ist noch kein Text für|eine Speicherung verfügbar !",1," Return ",a%
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE text_drucken
- LOCAL x&,y&,b&,h&,temp$
- IF anzahl_zeilen%>0
- ALERT 2,"Wollen Sie den aktuellen|Text ausdrucken ?",1," Ja | Nein ",a%
- DEFMOUSE pfeil$
- IF a%=1
- ~FORM_CENTER(r_hindruck%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_hindruck%,0,7,0,0,640,400)
- TEXT 225,224,"1"
- @drucken(1,anzahl_zeilen%)
- PUT x&,y&,temp$
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE text_loeschen
- IF anzahl_zeilen%>0
- ALERT 3,"Wollen Sie den aktuellen|Text wirklich löschen ?",1," Ja | Nein ",a|
- IF a|=1
- PRINT CHR$(27)+"f";
- ERASE zeile$()
- DIM zeile$(max_zeilen%)
- oberste%=0
- anzahl_zeilen%=0
- block!=FALSE
- blockanfang%=0
- blockende%=0
- filename$="TESTTEXT.TXT"
- zlen%=79
- papierlen%=66
- seitelen%=58
- lrand%=1
- aboben%=3
- tabulator%=5
- ARRAYFILL tabulator!(),FALSE
- FOR i|=1 TO zlen% STEP tabulator%
- tabulator!(i|)=TRUE
- NEXT i|
- tabulator!(1)=FALSE
- @cl_s
- @statuszeile
- ENDIF
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE neuer_ordner
- LOCAL x&,y&,b&,h&,temp$,exit%,p|,ph$,ordner$
- FILESELECT "\*.*",ph$,ph$
- IF ph$<>"" AND LEN(ph$)>1
- ALERT 3,"Nur der Pathname zählt!|Der Dateiname wird vergessen!",1," Okay ",a|
- DEFMOUSE pfeil$
- p|=RINSTR(ph$,"\")
- ph$=LEFT$(ph$,p|)
- ENDIF
- CHAR{{OB_SPEC(r_ordner%,edordner&)}}=ordner$
- ~FORM_CENTER(r_ordner%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_ordner%,0,7,0,0,640,400)
- exit%=FORM_DO(r_ordner%,edordner&)
- ~OBJC_CHANGE(r_ordner%,exit%,0,x&,y&,b&,h&,0,0)
- ordner$=CHAR{{OB_SPEC(r_ordner%,edordner&)}}
- PUT x&,y&,temp$
- IF exit%=ordokay&
- ALERT 1,"Der Ordner :"+ordner$+"|im Phat :"+ph$+"|wird angelegt !|Bitte warten!",1," Okay | Abbruch ",a|
- DEFMOUSE pfeil$
- IF a|=1
- MKDIR ph$+ordner$
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE file_weg
- LOCAL x&,y&,b&,h&,temp$,exit%,ph$,ordner$
- FILESELECT "\*.*",ph$,ph$
- IF ph$<>"" AND LEN(ph$)>1
- ALERT 3,"Soll das File :|"+ph$+"|wirklich gelöscht werden ?",2," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- ~FORM_CENTER(r_loeschen%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_loeschen%,0,7,0,0,640,400)
- KILL ph$
- PUT x&,y&,temp$
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE disk_format
- LOCAL x&,y&,b&,h&,sp|,zp|,nr%,temp$,la|
- sp|=CRSCOL
- zp|=CRSLIN
- nr%=oberste%-2+CRSLIN
- PRINT CHR$(27)+"f";
- ALERT 2,"Welches Laufwerk möchtest|du Formatieren ?",1," A | B | Keins",la|
- DEFMOUSE pfeil$
- IF la|<3
- okay!=FALSE
- ~FORM_CENTER(r_dformat%,x&,y&,b&,h&)
- ~OBJC_DRAW(r_dformat%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- IF UPPER$(t$)="E"
- seiten|=1
- med|=248
- ALERT 3,"Formatieren löscht alle Daten auf|der Diskette rettungslos!| Wirklich Formatieren ?",2," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- @up.format(1,seiten|,80,9,5,112,med|)
- okay!=TRUE
- ENDIF
- ELSE IF UPPER$(t$)="D"
- seiten|=2
- med|=249
- ALERT 3,"Formatieren löscht alle Daten auf|der Diskette rettungslos!| Wirklich Formatieren ?",2," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- @up.format(1,seiten|,80,9,5,112,med|)
- okay!=TRUE
- ENDIF
- ENDIF
- UNTIL okay!
- ENDIF
- CLS
- @statuszeile
- @menueleiste
- @ausgabe_ab_zeile(nr%)
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE up.format(drv%,sid%,trk%,spt%,fat%,dir%,med%)
- buf$=SPACE$(10000)
- VOID FRE(0)
- buf%=VARPTR(buf$)
- FOR t%=0 TO trk%-1
- FOR s%=0 TO sid%-1
- e%=XBIOS(10,L:buf%,L:0,drv%,spt%,t%,s%,1,L:&H87654321,0)
- IF e%
- PRINT
- PRINT "Seite ";s%," spur ";t%;" Fehler ";e%;" Sektor ";
- b%=buf%
- WHILE DPEEK(b%)
- PRINT DPEEK(b%)'
- ADD b%,2
- WEND
- ELSE
- OUT 5,42
- ENDIF
- NEXT s%
- NEXT t%
- sec%=trk%*spt%*sid%
- buf$=STRING$(6,0)+MKL$(XBIOS(17))+CHR$(0)+MKI$(2)+CHR$(2)
- buf$=buf$+MKI$(&H100)+CHR$(2)+CHR$(dir%)+CHR$(dir%/256)
- buf$=buf$+CHR$(sec%)+CHR$(sec%/256)+CHR$(med%)
- buf$=buf$+MKI$(fat%*256)+MKI$(spt%*256)+MKI$(sid%*256)
- buf$=buf$+MKI$(0)+STRING$(512,0)
- VOID XBIOS(9,L:VARPTR(buf$),L:o#,drv%,0,0,1)
- VOID BIOS(7,drv%)
- buf$=MKL$(&HF7FFFF00)+STRING$(508,0)
- VOID BIOS(4,1,L:VARPTR(buf$),1,1,drv%)
- VOID BIOS(4,1,L:VARPTR(buf$),1,fat%+1,drv%)
- PRINT
- PRINT DFREE(drv%+1);" Bytes frei"
- RETURN
- > PROCEDURE name_aendern
- LOCAL x&,y&,b&,h&,temp$,exit%,ph$,n_ame$
- CHAR{{OB_SPEC(r_ordner%,edordner&)}}=n_ame$
- ~FORM_CENTER(r_ordner%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_ordner%,0,7,0,0,640,400)
- TEXT 234,190,"Neuer Textname "
- exit%=FORM_DO(r_ordner%,edordner&)
- n_ame$=CHAR{{OB_SPEC(r_ordner%,edordner&)}}
- ~OBJC_CHANGE(r_ordner%,exit%,0,x&,y&,b&,h&,0,0)
- PUT x&,y&,temp$
- IF exit%=ordokay& AND n_ame$<>""
- IF LEN(n_ame$)>8
- filename$=LEFT$(n_ame$,8)+"."+RIGHT$(n_ame$,3)
- ELSE
- filename$=n_ame$+".TXT"
- ENDIF
- @statuszeile
- ENDIF
- RETURN
- > PROCEDURE laufwerk_wechseln
- LOCAL x&,y&,b&,h&,temp$,laufw|,t$,wahl|
- ~FORM_CENTER(r_laufwerk%,x&,y&,b&,h&)
- ~OBJC_DRAW(r_laufwerk%,0,7,x&,y&,b&,h&)
- laufw|=BIOS(10)
- REPEAT
- t$=INKEY$
- SELECT t$
- CASE "a","A"
- wahl|=0
- CASE "b","B"
- wahl|=1
- CASE "c","C"
- wahl|=2
- CASE "d","D"
- wahl|=3
- CASE "e","E"
- wahl|=4
- CASE "f","F"
- wahl|=5
- ENDSELECT
- UNTIL BTST(laufw|,wahl|) !nur ende wenn Laufwerk angeschloßen ist
- CHDRIVE wahl|+1
- pfad$=CHR$(65+wahl|)+":\*"
- CHDIR CHR$(65+wahl|)+":\"
- PUT x&,y&,temp$
- CLR temp$
- RETURN
- > PROCEDURE prg_ende
- LOCAL sp|,zp|,x&,y&,b&,h&,temp$,w%
- sp|=CRSCOL
- zp|=CRSLIN
- DEFMOUSE crs1$
- ~FORM_CENTER(r_hinende%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_hinende%,0,7,0,0,640,400)
- REPEAT
- MOUSE mx&,my&,mk|
- IF mk| OR INKEY$=CHR$(13)
- w%=OBJC_FIND(r_hinende%,0,7,mx&,my&)
- IF w%=endeja& OR INKEY$=CHR$(13)
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- PRINT CHR$(27)+"q"; ! reverse Schrift aus
- @anfang
- SETCOLOR 0,7,7,7
- EDIT
- ENDIF
- ENDIF
- UNTIL w%=endenein&
- w%=0
- PUT x&,y&,temp$
- WHILE MOUSEK=0
- WEND
- DEFMOUSE pfeil$
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Block
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpblock
- LOCAL w%,mx&,my&,mk|,x&,y&,b&,h&,t$,p|,temp$
- ~FORM_CENTER(r_block%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_block%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- MOUSE mx&,my&,mk|
- UNTIL t$<>"" OR mk|=1
- PUT x&,y&,temp$
- IF mk|=1
- w%=OBJC_FIND(r_block%,0,7,mx&,my&)
- IF w%>=banf& AND w%<=bmark&
- t$=MID$(blockstr$,w%-1,1)
- ENDIF
- ENDIF
- SELECT t$
- CASE "a","A"
- @block_anfang
- CASE "e","E"
- @block_ende
- CASE "l","L"
- @block_laden
- CASE "s","S"
- @block_speichern
- CASE "k","K"
- @block_kopieren
- CASE "v","V"
- @block_verschieben
- CASE "d","D"
- @block_loeschen
- CASE "p","P"
- @block_drucken
- CASE "m","M"
- @block_markierung
- ENDSELECT
- RETURN
- > PROCEDURE block_anfang
- LOCAL sp|,zp|
- IF (oberste%-2)+CRSLIN<=anzahl_zeilen%
- vorher!=block!
- blockanfang%=(oberste%-2)+CRSLIN
- IF blockende%>=blockanfang%
- block!=TRUE
- ELSE
- block!=FALSE
- ENDIF
- ENDIF
- zp|=CRSLIN
- sp|=CRSCOL
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE block_ende
- LOCAL sp|,zp|
- IF (oberste%-2)+CRSLIN<=anzahl_zeilen%
- vorher!=block!
- blockende%=(oberste%-2)+CRSLIN
- IF blockende%>=blockanfang%
- block!=TRUE
- ELSE
- block!=FALSE
- ENDIF
- ENDIF
- zp|=CRSLIN
- sp|=CRSCOL
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE block_kopieren
- LOCAL an_zeile%
- IF block!
- an_zeile%=(oberste%-2)+CRSLIN
- IF an_zeile%<=anzahl_zeilen%+1
- IF anzahl_zeilen%+blocklaenge%<=max_zeilen%
- blocklaenge%=blockende%-blockanfang%
- FOR i&=0 TO blocklaenge% ! Testen wo eingefügt wird vor oder hinter pos
- INSERT zeile$(an_zeile%+i&)=zeile$(i&+blockanfang%)
- NEXT i&
- ADD anzahl_zeilen%,blocklaenge%
- @ausgabe_ab_zeile(oberste%+1)
- ELSE
- ALERT 1,"Der Speicherplatz reicht|dafür nicht aus.",1," Return ",a%
- DEFMOUSE pfeil$
- ENDIF
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE block_verschieben
- LOCAL an_zeile%
- zei_pos|=oberste%-2+CRSLIN
- IF block!
- IF (oberste%-2)+CRSLIN<blockanfang% OR (oberste%-2)+CRSLIN>blockende%
- an_zeile%=(oberste%-2)+CRSLIN
- IF an_zeile%<=anzahl_zeilen%+1
- IF anzahl_zeilen%+blocklaenge%<=max_zeilen%
- blocklaenge%=blockende%-blockanfang%
- FOR i&=1 TO blocklaenge% ! Testen wo eingefügt wird vor oder hinter pos
- IF blockanfang%<an_zeile%
- INSERT zeile$(an_zeile%)=zeile$(blockanfang%)
- DELETE zeile$(blockanfang%)
- ELSE
- INSERT zeile$(an_zeile%+i&)=zeile$(blockanfang%)
- DELETE zeile$(blockanfang&)
- ENDIF
- NEXT i&
- @ausgabe_ab_zeile(oberste%+1)
- blockanfang%=an_zeile%
- blockende%=blockanfang%+blocklaenge%
- ENDIF
- ENDIF
- ELSE
- ALERT 1,"Cursor im Block !! |Das geth aber wirklich nicht !",1,"Return ",a%
- DEFMOUSE pfeil$
- ENDIF
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- RETURN
- > PROCEDURE block_speichern
- LOCAL sp|,zp|
- IF block!
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT CHR$(27)+"f"; ! Cursor abschalten
- @cl_s
- FILESELECT pfad$,"",filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- OPEN "O",#1,filename$
- FOR i%=blockanfang% TO blockende%
- PRINT #1,zeile$(i%)
- NEXT i%
- CLOSE #1
- ENDIF
- @cl_s
- PRINT CHR$(27)+"e" ! Cursor einschalten
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(sp|,zp|);
- ELSE
- ALERT 1,"Es ist noch kein Block für|eine Speicherung verfügbar !",1," Return ",a%
- DEFMOUSE pfeil$
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE block_laden
- LOCAL zp|,laden_an%,anzeile%
- zp|=CRSLIN
- PRINT CHR$(27)+"f"; ! Cursor ausschalten
- @cl_s
- FILESELECT pfad$,"",filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- laden_an%=anzahl_zeilen%+1
- OPEN "I",#1,filename$
- REPEAT
- LINE INPUT #1,dummy$(laden_an%)
- INC laden_an%
- UNTIL EOF(#1) OR laden_an%=max_zeilen%
- CLOSE #1
- blocklaenge%=laden_an%-anzahl_zeilen%-1
- IF laden_an%=max_zeilen%
- ALERT 1,"Diese Datei ist zu groß, um|vollständig geladen zu werden.",1," Return ",a%
- DEFMOUSE pfeil$
- ELSE
- anzeile%=oberste%-2+CRSLIN
- block!=TRUE
- blockanfang%=anzeile%
- blockende%=blockanfang%+blocklaenge%-1
- FOR i%=1 TO blocklaenge%
- INSERT zeile$(anzeile%+i%)=dummy$(i%)
- NEXT i%
- oberste%=blockanfang%-1
- ADD anzahl_zeilen%,blocklaenge%
- ENDIF
- ENDIF
- PRINT CHR$(27)+"e"; ! Cursor einschalten
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(1,3);
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE block_drucken
- LOCAL x&,y&,b&,h&,temp$,a|
- IF block!
- ALERT 2,"Willst du den aktuellen|Block ausdrucken ?",1," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- ~FORM_CENTER(r_hindruck%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_hindruck%,0,7,0,0,640,400)
- TEXT 225,224,"1"
- @drucken(blockanfang%,blockende%)
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE block_loeschen
- LOCAL x&,y&,b&,h&,temp$,oben%,a|
- oben%=oberste%-2+CRSLIN
- IF block!
- ALERT 3,"Soll der Block wirklich|restlos gelöscht werden ?",1," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- ~FORM_CENTER(r_loeschen%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_loeschen%,0,7,0,0,640,400)
- blocklaenge%=blockende%-blockanfang%+1
- FOR i%=1 TO blocklaenge%
- DELETE zeile$(blockanfang%)
- NEXT i%
- SUB anzahl_zeilen%,blocklaenge%
- block!=FALSE
- oberste%=blockanfang%
- blockanfang%=0
- blockende%=0
- blocklaenge%=0
- block!=FALSE
- PRINT CHR$(27)+"q"; ! reverse Schrift aus
- PUT x&,y&,temp$
- @ausgabe_ab_zeile(oberste%+1)
- PRINT AT(1,3);
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE block_markierung
- IF block!
- block!=FALSE
- PRINT CHR$(27)+"q";
- IF oberste%+24>=blockanfang% AND oberste%<=blockende%
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- blockanfang%=0
- blockende%=0
- @statuszeile
- ENDIF
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Arbeit
- ' ----------------------------------------------------------------------------
- > PROCEDURE hparbeit
- LOCAL x&,y&,b&,h&,t$,p|,temp$
- ~FORM_CENTER(r_arbeit%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_arbeit%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- MOUSE mx&,my&,mk|
- UNTIL t$<>"" OR mk|=1
- PUT x&,y&,temp$
- IF mk|=1
- w%=OBJC_FIND(r_arbeit%,0,7,mx&,my&)
- ' insert gomar3
- IF w%>=insert& AND w%<=gomar3&
- t$=MID$(arbstr$,w%-1,1)
- ENDIF
- ENDIF
- PUT x&,y&,temp$
- SELECT t$
- CASE "i","I"
- @arbeit_insert
- CASE "u","U"
- @arbeit_owert
- CASE "s","S"
- @arbeit_finde
- CASE "e","E"
- @arbeit_ersetze
- CASE "z","Z"
- @zeile_einfuegen
- CASE "d","D"
- @zeile_loeschen
- CASE "t","T"
- @zeile_trennen
- CASE "p","P"
- @pharsen
- CASE "n","N"
- @nochmal
- CASE "f","F"
- @text_format
- CASE "1"
- @setze_marke(1)
- CASE "2"
- @setze_marke(2)
- CASE "3"
- @setze_marke(3)
- CASE 33
- @springe_marke(1)
- CASE 34
- @springe_marke(2)
- CASE 35
- @springe_marke(3)
- ENDSELECT
- RETURN
- > PROCEDURE arbeit_finde
- LOCAL x&,y&,b&,h&,temp$,zp|,sp|,exit%
- sp|=CRSCOL
- zp|=CRSLIN
- DEFMOUSE crs1$
- CHAR{{OB_SPEC(r_suchetex%,sutext&)}}=suchstring$
- ~FORM_CENTER(r_suchetex%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_suchetex%,0,7,0,0,640,400)
- exit%=FORM_DO(r_suchetex%,sutext&)
- suchstring$=CHAR{{OB_SPEC(r_suchetex%,sutext&)}}
- ~OBJC_CHANGE(r_suchetex%,exit%,0,x&,y&,b&,h&,0,0)
- PUT x&,y&,temp$
- IF exit%=suokay& AND suchstring$<>""
- @suchen_ab(oberste%+1)
- suche!=TRUE
- ELSE
- PRINT AT(sp|,zp|);CHR$(7);
- ENDIF
- DEFMOUSE pfeil$
- @statuszeile
- RETURN
- > PROCEDURE arbeit_ersetze
- LOCAL x&,y&,b&,h&,temp$,zp|,sp|,exit%
- sp|=CRSCOL
- zp|=CRSLIN
- DEFMOUSE crs1$
- CHAR{{OB_SPEC(r_erstext%,erertext&)}}=ersatzstring$
- CHAR{{OB_SPEC(r_erstext%,ersutext&)}}=suchstring$
- ~FORM_CENTER(r_erstext%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_erstext%,0,7,0,0,640,400)
- exit%=FORM_DO(r_erstext%,ersutext&)
- suchstring$=CHAR{{OB_SPEC(r_erstext%,ersutext&)}}
- ersatzstring$=CHAR{{OB_SPEC(r_erstext%,erertext&)}}
- ~OBJC_CHANGE(r_erstext%,exit%,0,x&,y&,b&,h&,0,0)
- PUT x&,y&,temp$
- IF exit%=ersokay& AND suchstring$<>"" AND ersatzstring$<>""
- @ersetzen_ab(oberste%+zp|+1)
- suche!=FALSE
- ELSE
- PRINT AT(sp|,zp|);CHR$(7);
- ENDIF
- DEFMOUSE pfeil$
- @statuszeile
- RETURN
- > PROCEDURE arbeit_insert
- LOCAL sp|,zp|
- zp|=CRSLIN
- sp|=CRSCOL
- insertmode!=TRUE
- PRINT AT(21,1);"I"
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE arbeit_owert
- LOCAL sp|,zp|
- zp|=CRSLIN
- sp|=CRSCOL
- insertmode!=FALSE
- PRINT AT(21,1);"O"
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE zeile_einfuegen
- LOCAL sp|,zp|
- IF anzahl_zeilen%<max_zeilen% AND anzahl_zeilen%>=(oberste%-2)+CRSLIN
- PRINT CHR$(27)+"L"; ! Bildschirm ab Cursor eine Zeile runter schieben
- @menueleiste
- INC anzahl_zeilen%
- sp|=CRSCOL
- zp|=CRSLIN
- nr%=(oberste%-2)+zp|
- INSERT zeile$(nr%)=""
- IF block!
- IF (oberste%-2)+CRSLIN<=blockanfang%
- INC blockanfang%
- ENDIF
- IF (oberste%-2)+CRSLIN<=blockende%
- INC blockende%
- ENDIF
- ENDIF
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- RETURN
- > PROCEDURE zeile_loeschen
- LOCAL sp|,zp|
- IF (oberste%-2)+CRSLIN<=anzahl_zeilen%
- zp|=CRSLIN
- sp|=CRSCOL
- PRINT CHR$(27)+"M"; ! Bildschirm hochschieben
- IF block!
- IF oberste%+23>=blockanfang% AND oberste%+23<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT AT(1,24);CHR$(27)+"K";
- @menueleiste
- PRINT AT(1,24);zeile$(oberste%+23);
- PRINT AT(sp|,zp|);
- DELETE zeile$((oberste%-2)+CRSLIN)
- DEC anzahl_zeilen%
- ELSE
- PRINT CHR$(7); ! Fehlerglocke falls Cursor hinter Text
- ENDIF
- RETURN
- > PROCEDURE pharsen
- LOCAL x%,y%,k%,cc$,sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- PRINT CHR$(27)+"f";
- GET 14,90,594+16,325,cc$
- DEFFILL 1,1,1
- PBOX 18,94,594+16,325
- DEFFILL 1,0,0
- PBOX 14,90,590+16,321
- BOX 17,93,587+16,318
- @head(32,102,584,"Phrasen")
- DEFTEXT 1,0,0,6
- TEXT 288,309,"Zurück"
- TEXT 188,309,"Laden"
- TEXT 378,309,"Speichern"
- DEFTEXT 1,0,0,13
- BOX 260,296,360,314
- BOX 261,297,359,313
- BOX 160,296,260,314
- BOX 161,297,259,313
- BOX 360,296,460,314
- BOX 361,297,459,313
- FOR i%=1 TO 10
- PRINT AT(5,8+i%);"F"+STR$(i%,2);": "
- PRINT AT(10,8+i%);phr$(i%)
- NEXT i%
- DO
- REPEAT
- MOUSE x%,y%,k%
- IF k%=1 AND (x%>160 AND x%<259 AND y%>297 AND y%<313)
- @pharsen_laden
- ENDIF
- IF k%=1 AND (x%>360 AND x%<460 AND y%>297 AND y%<313)
- @pharsen_speichern
- ENDIF
- ty%=(y%-128)/16+1
- IF (ty%<1 OR ty%>10)
- IF tya%>0
- PRINT AT(5,8+tya%);"F"+STR$(tya%,2)+": "
- PRINT AT(10,8+tya%);phr$(tya%)
- ENDIF
- tya%=0
- ELSE
- IF tya%<>ty% AND ty%>0 AND ty%<11
- IF tya%>0
- PRINT AT(5,8+tya%);"F"+STR$(tya%,2)+": "
- PRINT AT(10,8+tya%);phr$(tya%)
- ENDIF
- tya%=ty%
- PRINT AT(5,8+tya%);CHR$(27)+"p"+"F"+STR$(tya%,2);": "
- PRINT AT(10,8+tya%);phr$(tya%)+CHR$(27)+"q"
- ENDIF
- ENDIF
- UNTIL k% AND ty%>0 AND ty%<13
- EXIT IF x%>261 AND y%>297 AND x%<359 AND y%<313
- IF ty%>0 AND ty%<11
- PRINT AT(5,8+tya%);"F"+STR$(tya%,2)+": "
- PRINT AT(10,8+tya%);phr$(tya%)
- PRINT AT(10,8+ty%);
- FORM INPUT 63 AS phr$(ty%)
- ENDIF
- LOOP
- PUT 14,90,cc$
- CLR tya%,ty%
- PRINT AT(sp|,zp|);CHR$(27)+"e";
- RETURN
- > PROCEDURE pharsen_laden
- LOCAL temp$
- GET 155,15,480,40,temp$
- @head(157,20,472,"Pharsen Laden")
- FILESELECT "*.PHR","",filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- OPEN "I",#3,filename$
- FOR i|=1 TO 10
- LINE INPUT #3,phr$(i|)
- NEXT i|
- CLOSE #3
- ENDIF
- PUT 155,15,temp$
- FOR i%=1 TO 10
- PRINT AT(5,8+i%);"F"+STR$(i%,2);": "
- PRINT AT(10,8+i%);phr$(i%)
- NEXT i%
- RETURN
- > PROCEDURE pharsen_speichern
- GET 155,15,480,40,temp$
- @head(157,20,472,"Pharsen Speichern")
- FILESELECT "*.PHR","",filename$
- @pfad_merken
- IF NOT (RIGHT$(filename$)="\" OR filename$="")
- OPEN "O",#3,filename$
- FOR i|=1 TO 10
- PRINT #3,phr$(i|)
- NEXT i|
- CLOSE #3
- ENDIF
- PUT 155,15,temp$
- RETURN
- > PROCEDURE zeile_trennen
- LOCAL sp|,zp|,laenge|,stehen_bleibt$,abschneiden$
- sp|=CRSCOL
- zp|=CRSLIN
- nr%=(oberste%-2)+CRSLIN
- laenge|=LEN(zeile$(nr%))
- IF nr%=<anzahl_zeilen% AND CRSCOL<=laenge% AND anzahl_zeilen%<max_zeilen%
- stehen_bleibt$=LEFT$(zeile$(nr%),CRSCOL-1)
- abschneiden$=MID$(zeile$(nr%),CRSCOL)
- PRINT CHR$(27)+"K"; ! Zeile ab Cursor löschen
- IF CRSLIN<24
- PRINT AT(1,CRSLIN+1);CHR$(27)+"L"; ! Bildschirm ab Cursor nach unten
- PRINT AT(1,CRSLIN);abschneiden$;
- @menueleiste
- ENDIF
- zeile$(nr%)=stehen_bleibt$
- INSERT zeile$(nr%+1)=abschneiden$
- INC anzahl_zeilen%
- PRINT AT(1,CRSLIN);
- ELSE
- PRINT CHR$(7); ! Fehlerglocke
- ENDIF
- RETURN
- > PROCEDURE zeile_join
- LOCAL sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- IF (oberste%-2)+CRSLIN<anzahl_zeilen%
- nr%=(oberste%-2)+CRSLIN
- IF LEN(zeile$(nr%))+LEN(zeile$(nr%+1))<zlen%
- zeile$(nr%)=zeile$(nr%)+zeile$(nr%+1)
- PRINT AT(1,zp|);zeile$(nr%);
- DELETE zeile$(nr%+1)
- PRINT AT(1,zp|+1);CHR$(27)+"M"; ! Bildschirm hochschieben
- IF block!
- IF i%>=blockanfang% AND i%<=blockende%
- PRINT CHR$(27)+"p"; ! revers on
- ELSE
- PRINT CHR$(27)+"q"; ! revers off
- ENDIF
- ENDIF
- PRINT AT(1,24);CHR$(27)+"K";
- @menueleiste
- PRINT AT(1,24);zeile$(oberste%+23);
- DEC anzahl_zeilen%
- ELSE
- ENDIF
- ELSE
- PRINT CHR$(7); ! Fehlerglocke falls Cursor hinter Text
- ENDIF
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE nochmal
- IF suche!
- @suchen_ab(oberste%-2+CRSLIN+1)
- ELSE
- @ersetzen_ab(oberste%-2+CRSLIN+1)
- ENDIF
- RETURN
- > PROCEDURE text_format
- LOCAL x&,y&,b&,h&,t$,p%,temp$,sp|,zp|
- ~FORM_CENTER(r_textform%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_textform%,0,7,0,0,640,400)
- sp|=CRSCOL
- zp|=CRSLIN
- REPEAT
- t$=INKEY$
- UNTIL t$<>""
- PUT x&,y&,temp$
- SELECT t$
- CASE "z","Z"
- @textformat(nr%,nr%)
- CASE "a","A"
- CLR p%
- nr%=oberste%-2+CRSLIN
- FOR i%=nr% TO anzahl_zeilen%
- IF RIGHT$(zeile$(i%))=CHR$(174)
- p%=i%
- ENDIF
- EXIT IF p%>0
- NEXT i%
- @textformat(nr%,p%)
- CASE "t","T"
- @textformat(1,anzahl_zeilen%)
- ENDSELECT
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE setze_marke(nr|)
- LOCAL sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- nr%=oberste%-2+CRSLIN
- marke%(nr|)=nr%
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE springe_marke(nr|)
- IF marke%(nr|)>0
- oberste%=marke%(nr|)
- @ausgabe_ab_zeile(oberste%)
- ENDIF
- PRINT AT(1,3);
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Scroll
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpscroll
- LOCAL x&,y&,b&,h&,t$,p|,temp$,um|,sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- ~FORM_CENTER(r_scroll%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_scroll%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- UNTIL t$<>""
- PUT x&,y&,temp$
- um|=BIOS(11,-1) AND 16
- t$=RIGHT$(t$)
- IF um|=16
- IF t$=CHR$(&H48) ! Seite Hoch
- @page_up
- ELSE IF t$=CHR$(&H50) ! Seite Runter
- @page_down
- ELSE IF t$=CHR$(&H4B) ! Seite rechts
- ELSE IF t$=CHR$(&H4D) ! Seite links
- ELSE IF t$=CHR$(&H47) ! Textanfang
- @text_anfang
- ENDIF
- ELSE IF t$=CHR$(&H48) ! Zeile hoch
- anz%=oberste%-2+CRSLIN
- anzahl_zeilen%=MAX(anz%,anzahl_zeilen%)
- IF CRSLIN=24
- @scroll_rauf
- ELSE
- PRINT CHR$(27)+"B";
- ENDIF
- ELSE IF t$=CHR$(&H50) ! Zeile runter
- IF CRSLIN=3
- @scroll_runter
- ELSE
- PRINT CHR$(27)+"A";
- ENDIF
- ELSE IF t$=CHR$(&H47) ! seitenanfang
- PRINT AT(1,3);
- ELSE
- PRINT AT(sp|,zp|);
- ENDIF
- RETURN
- > PROCEDURE text_anfang
- IF oberste%>0
- PRINT CHR$(27)+"f";
- oberste%=0
- @ausgabe_ab_zeile(1)
- PRINT AT(1,3);
- ENDIF
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Attribute
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpattribute
- LOCAL x&,y&,b&,h&,t$,p|,temp$,sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- PRINT CHR$(27)+"f";
- ~FORM_CENTER(r_textattr%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_textattr%,0,7,0,0,640,400)
- REPEAT
- t$=INKEY$
- UNTIL t$<>""
- PUT x&,y&,temp$
- IF LEN(t$)=2
- t|=ASC(RIGHT$(t$))
- IF t|=&H3F
- t$="F5"
- ELSE IF t|=&H40
- t$="F6"
- ELSE IF t|=&H41
- t$="F7"
- ELSE IF t|=&H42
- t$="F8"
- ENDIF
- ENDIF
- SELECT t$
- CASE "l","L","F5"
- links!=TRUE
- rechts!=FALSE
- blocksatz!=FALSE
- zentre!=FALSE
- PRINT AT(27,1);"Links "
- CASE "r","R","F6"
- links!=FALSE
- rechts!=TRUE
- blocksatz!=FALSE
- zentre!=FALSE
- PRINT AT(27,1);"Recht "
- CASE "z","Z","F7"
- links!=FALSE
- rechts!=FALSE
- blocksatz!=FALSE
- zentre!=TRUE
- PRINT AT(27,1);"Zentr "
- CASE "b","B","F8"
- links!=FALSE
- rechts!=FALSE
- blocksatz!=TRUE
- zentre!=FALSE
- PRINT AT(27,1);"Blocks"
- CASE "f","F"
- CASE "u","U"
- CASE "k","K"
- CASE "h","H"
- CASE "s","S"
- CASE "p","P"
- ENDSELECT
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,zp|);
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm ACC'S
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpaccs
- LOCAL bild$,raus!
- SGET bild$
- DIM me$(14)
- menuedata:
- DATA ACC's, Bitte ein ACC , anklicken ,1,2,3,4,5,6,""
- DATA Ende,Zurück,"",""
- OPTION BASE 0
- RESTORE menuedata
- FOR i|=0 TO 13
- READ me$(i|)
- NEXT i|
- OPENW 0
- CLS
- MENU me$()
- ON MENU GOSUB menarbeit
- DO
- ON MENU
- EXIT IF raus!=TRUE
- LOOP
- ERASE me$()
- raus!=FALSE
- OPTION BASE 1
- CLOSEW 0
- CLS
- SPUT bild$
- DEFMOUSE pfeil$
- RETURN
- > PROCEDURE menarbeit
- LOCAL w%
- w%=MENU(0)
- IF w%=11
- raus!=TRUE
- ENDIF
- RETURN
- ' ----------------------------------------------------------------------------
- ' Hauptprogramm Einstellung
- ' ----------------------------------------------------------------------------
- > PROCEDURE hpeinstell
- LOCAL x&,y&,b&,h&,t$,p|,temp$
- ~FORM_CENTER(r_einstell%,x&,y&,b&,h&)
- GET x&,y&,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_einstell%,0,7,0,0,640,400)
- REPEAT
- MOUSE mx&,my&,mk|
- t$=INKEY$
- UNTIL t$<>"" OR mk|
- IF mk|
- w%=OBJC_FIND(r_einstell%,0,7,mx&,my&)
- IF w%>=seiform& AND w%<=tgestalt&
- t$=MID$(einstr$,w%-1,1)
- ENDIF
- ENDIF
- PUT x&,y&,temp$
- SELECT t$
- CASE "s","S"
- @seitenformat
- CASE "z","Z"
- @zeilenlaenge
- CASE "d","D"
- GET 117,58,521,360,temp1$
- @einstellung_grafik
- @einstellung_select
- PUT 117,58,temp1$
- CASE "h","H"
- @cl_s
- PRINT CHR$(27)+"f";
- PRINT AT(1,3);"Einstellen des Druckertreibers :"
- PRINT AT(1,4);"ELITE = 27 , 77 :";
- INPUT "",esc|,code|
- elite$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,5);"PICA = 27 , 80 :";
- INPUT "",esc|,code|
- pica$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,6);"NLO-Ein = 27 , 120 , 49 :";
- INPUT "",esc|,code|,mod|
- nlq$=CHR$(esc|)+CHR$(code|)+CHR$(mod|)
- PRINT AT(1,7);"NLQ-Aus = 27 , 120 , 48 :";
- INPUT "",esc|,code|,mod|
- nlqaus$=CHR$(esc|)+CHR$(code|)+CHR$(mod|)
- PRINT AT(1,8);"Schmalschrift an = 27 , 15 :";
- INPUT "",esc|,code|
- schmal$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,9);"Schmalschrift aus = 18 :";
- INPUT "",code|
- schmalaus$=CHR$(code|)
- PRINT AT(1,10);"Proportional an = 27 , 112 , 49 :";
- INPUT "",esc|,code|,mod|
- prop$=CHR$(esc|)+CHR$(code|)+CHR$(mod|)
- PRINT AT(1,11);"Proportional aus = 27 , 112 , 48 :";
- INPUT "",esc|,code|,mod|
- propaus$=CHR$(esc|)+CHR$(code|)+CHR$(mod|)
- PRINT AT(1,12);"Kursiv ein = 27 , 52 :";
- INPUT "",esc|,code|
- kur$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,13);"Kursiv aus = 27 , 53 :";
- INPUT "",esc|,code|
- kuraus$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,14);"Doppeldruck an = 27 , 71 :";
- INPUT "",esc|,code|
- dopp$=CHR$(esc|)+CHR$(code|)
- PRINT AT(1,15);"Doppeldruck aus = 27 , 72 :";
- INPUT "",esc|,code|
- doppaus$=CHR$(esc|)+CHR$(code|)
- druck$=CHR$(27)+"R"+CHR$(2)+schmalaus$+elite$
- ALERT 3,"Sollte sich auf diese Weise|dein Drucker NICHT anpassen|lassen,so mußt du das Programm|ändern!",1," INFO | Geht ",a|
- IF a|=1
- ALERT 3,"Die Variabeln für den|Druckertreiber stehen in der|Procedure VORBEREITUNG und|sind mit Kommentar versehen",1,"Viel|Erfolg|Hilfe",a|
- IF a|=3
- ALERT 3,"Wenn's immer noch nicht klappt|ruf mich einmal an!|Tel.:0 64 24 / 45 04 n. 18:00h",1,"Mach|ich",a|
- ENDIF
- ENDIF
- @cl_s
- @ausgabe_ab_zeile(oberste%+1)
- @menueleiste
- DEFMOUSE pfeil$
- CASE "a","A"
- OB_STATE(r_einstell%,ascmod&)=0
- OB_STATE(r_einstell%,twmod&)=8
- asc!=TRUE
- tw!=FALSE
- CASE "t","T"
- OB_STATE(r_einstell%,ascmod&)=8
- OB_STATE(r_einstell%,twmod&)=0
- asc!=FALSE
- tw!=TRUE
- CASE "p","P"
- frei%=FRE(0)
- frei_zeilen%=max_zeilen%-anzahl_zeilen%
- ALERT 3,"Freier Speicherplatz:|In Bytes : "+STR$(frei%)+"|In Zeilen : "+STR$(frei_zeilen%),1," Okay ",a|
- DEFMOUSE pfeil$
- CASE "g","G"
- @seite_zeigen
- CASE "n","N"
- OB_STATE(r_einstell%,trennan&)=0
- OB_STATE(r_einstell%,trennaus&)=8
- trenne!=TRUE
- CASE "v","V"
- OB_STATE(r_einstell%,trennan&)=8
- OB_STATE(r_einstell%,trennaus&)=0
- trenne!=FALSE
- ENDSELECT
- RETURN
- > PROCEDURE seitenformat
- LOCAL x&,y&,b&,h&,temp$,zp|,sp|,exit%,okay!
- zp|=CRSLIN
- sp|=CRSCOL
- DEFMOUSE crs1$
- PRINT CHR$(27)+"f";
- '
- ' Alte Tabpos löschen
- '
- IF tabulator%>0
- FOR i|=1 TO zlen% STEP tabulator%
- tabulator!(i|)=FALSE
- NEXT i|
- tabulator!(1)=FALSE
- ENDIF
- ARRAYFILL seiten!(),FALSE
- '
- CHAR{{OB_SPEC(r_seitenform%,sfrmpl&)}}=STR$(papierlen%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmak&)}}=STR$(kopfob%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmao&)}}=STR$(aboben%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmau&)}}=STR$(abunten%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmaf&)}}=STR$(fuss%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmkol&)}}=kopfl$
- CHAR{{OB_SPEC(r_seitenform%,sfrmkom&)}}=kopfm$
- CHAR{{OB_SPEC(r_seitenform%,sfrmkor&)}}=kopfr$
- CHAR{{OB_SPEC(r_seitenform%,sfrmful&)}}=fussl$
- CHAR{{OB_SPEC(r_seitenform%,sfrmfum&)}}=fussm$
- CHAR{{OB_SPEC(r_seitenform%,sfrmfur&)}}=fussr$
- CHAR{{OB_SPEC(r_seitenform%,sfrmtab&)}}=STR$(tabulator%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmlr&)}}=STR$(lrand%)
- CHAR{{OB_SPEC(r_seitenform%,sfrmrr&)}}=STR$(rrand%)
- seitelen%=papierlen%-(kopfob%+aboben%+abunten%+fuss%)
- ' CHAR{{OB_SPEC(r_seitenform,sfrmdrl&)}}=STR$(seitelen%)
- REPEAT
- ~FORM_CENTER(r_seitenform%,x&,y&,b&,h&)
- GET x&-3,y&-3,x&+b&,y&+h&,temp$
- ~OBJC_DRAW(r_seitenform%,0,7,0,0,640,400)
- TEXT 254,242," "
- TEXT 254,242,STR$(seitelen%)
- exit%=FORM_DO(r_seitenform%,sfrmpl&)
- papierlen%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmpl&)}})
- kopfob%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmak&)}})
- aboben%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmao&)}})
- abunten%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmau&)}})
- fuss%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmaf&)}})
- kopfl$=CHAR{{OB_SPEC(r_seitenform%,sfrmkol&)}}
- kopfm$=CHAR{{OB_SPEC(r_seitenform%,sfrmkom&)}}
- kopfr$=CHAR{{OB_SPEC(r_seitenform%,sfrmkor&)}}
- fussl$=CHAR{{OB_SPEC(r_seitenform%,sfrmful&)}}
- fussm$=CHAR{{OB_SPEC(r_seitenform%,sfrmfum&)}}
- fussr$=CHAR{{OB_SPEC(r_seitenform%,sfrmfur&)}}
- tabulator%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmtab&)}})
- lrand%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmlr&)}})
- zlen%=VAL(CHAR{{OB_SPEC(r_seitenform%,sfrmrr&)}})
- seitelen%=papierlen%-(kopfob%+aboben%+abunten%+fuss%)
- ~OBJC_CHANGE(r_seitenform%,exit%,0,x&,y&,b&,h&,0,0)
- PUT x&-3,y&-3,temp$
- IF exit%=sfrmok&
- IF seitelen%>1 !seitelen%>5 AND seitelen%<80
- OPTION BASE 0
- FOR i%=0 TO max_zeilen%-1 STEP seitelen%
- seiten!(i%)=TRUE
- NEXT i%
- FOR i|=0 TO seitelen%-1
- seiten!(i|)=FALSE
- NEXT i|
- OPTION BASE 1
- okay!=TRUE
- ELSE
- ALERT 3,"Fehler beim Seitenformat|Bitte Handbuch lesen und|Werte prüfen!",1,"Nochmal",a%
- DEFMOUSE pfeil$
- ENDIF
- ENDIF
- UNTIL okay!
- IF tabulator%>0
- FOR i|=1 TO zlen% STEP tabulator%
- tabulator!(i|)=TRUE
- NEXT i|
- tabulator!(1)=FALSE
- ENDIF
- DEFMOUSE pfeil$
- @tableiste
- PRINT CHR$(27)+"e";
- PRINT AT(sp|,zp|);
- RETURN
- > PROCEDURE einstellung_grafik
- DEFFILL 1,2,8
- PBOX 118,59,520,359
- DEFFILL 0
- PBOX 124,65,514,353
- DEFFILL 1,2,8
- TEXT 220,87,"-- Druckereinstellung --"
- LINE 124,97,518,97
- LINE 122,103,516,103
- TEXT 134,129,"Near Leader Quality NLQ :"
- TEXT 134,154,"Schmalschrift :"
- TEXT 134,179,"Proportional :"
- TEXT 134,204,"Schriftart PICA :"
- TEXT 134,229,"Schriftart ELITE :"
- TEXT 134,254,"Kursivschrift :"
- TEXT 134,279,"Zeile zweimal Drucken :"
- DEFFILL 1,2,8
- PBOX 132,321,506,347
- DEFFILL 1,0
- PBOX 134,323,504,345
- TEXT 240,339,"Einstellung Fertig"
- @buttons_zeigen
- RETURN
- > PROCEDURE buttons_zeigen
- LOCAL z%,i%
- DEFFILL 0
- PBOX 348,112,485,283
- DEFFILL 1,2,8
- GRAPHMODE 3
- z%=1
- FOR i%=113 TO 281 STEP 25
- IF par!(z%)
- PBOX 350,i%,408,i%+17
- BOX 424,i%,482,i%+17
- ELSE
- PBOX 424,i%,482,i%+17
- BOX 350,i%,408,i%+17
- ENDIF
- TEXT 370,i%+14,"Ja"
- TEXT 437,i%+14,"Nein"
- INC z%
- NEXT i%
- GRAPHMODE 1
- RETURN
- > PROCEDURE einstellung_select
- LOCAL mx&,my&,mk|
- DEFMOUSE crs1$
- REPEAT
- MOUSE mx&,my&,mk|
- IF mk|=1
- IF (mx&>350 AND mx&<408) OR (mx&>424 AND mx&<482)
- SELECT my&
- CASE 113 TO 130 ! NLQ wählen
- IF mx&>350 AND mx&<408
- par!(1)=TRUE
- par!(2)=FALSE
- ELSE IF mx&>424 AND mx&<482
- par!(1)=FALSE
- ENDIF
- CASE 138 TO 155 ! Schmalschrift
- IF mx&>350 AND mx&<408
- par!(2)=TRUE
- par!(1)=FALSE
- par!(3)=FALSE
- ELSE IF mx&>424 AND mx&<482
- par!(2)=FALSE
- par!(5)=TRUE
- ENDIF
- CASE 163 TO 180 ! Proportional
- IF mx&>350 AND mx&<408
- par!(3)=TRUE
- par!(2)=FALSE
- par!(4)=FALSE
- par!(5)=FALSE
- ELSE IF mx&>424 AND mx&<482
- par!(3)=FALSE
- par!(5)=TRUE
- ENDIF
- CASE 188 TO 205 ! Pica
- IF mx&>350 AND mx&<408
- par!(3)=FALSE
- par!(4)=TRUE
- par!(5)=FALSE
- ELSE IF mx&>424 AND mx&<482
- par!(4)=FALSE
- par!(5)=TRUE
- ENDIF
- CASE 213 TO 230 ! Elite
- IF mx&>350 AND mx&<408
- par!(3)=FALSE
- par!(5)=TRUE
- par!(4)=FALSE
- ELSE IF mx&>424 AND mx&<482
- par!(5)=FALSE
- par!(4)=TRUE
- ENDIF
- CASE 238 TO 255 ! Doppeldruck
- IF mx&>350 AND mx&<408
- par!(6)=TRUE
- ELSE IF mx&>424 AND mx&<482
- par!(6)=FALSE
- ENDIF
- CASE 263 TO 280 ! Zeile zweimal drucken
- IF mx&>350 AND mx&<408
- par!(7)=TRUE
- ELSE IF mx&>424 AND mx&<482
- par!(7)=FALSE
- ENDIF
- ENDSELECT
- @buttons_zeigen
- ELSE IF my&>323 AND my&<345
- IF mx&>134 AND mx&<504
- mk|=4
- ENDIF
- ENDIF
- ENDIF
- UNTIL mk|=4 OR INKEY$=CHR$(13)
- druck$=""
- IF par!(1)
- druck$=druck$+nlq$
- ELSE
- druck$=druck$+nlqaus$
- ENDIF
- IF par!(2)=TRUE
- druck$=druck$+schmal$
- ELSE
- druck$=druck$+schmalaus$
- ENDIF
- IF par!(3)
- druck$=druck$+prop$
- ELSE
- druck$=druck$+propaus$
- ENDIF
- IF par!(4)
- IF zlen%>65
- ALERT 1,"ACHTUNG:|Der Text wird auf PICA|umformatiert!|Wirklich ausführen ???",1," Ja | Nein ",a|
- DEFMOUSE pfeil$
- IF a|=1
- druck$=druck$+pica$
- zlen%=65
- @textformat(1,anzahl_zeilen%)
- @tableiste
- ELSE
- druck$=druck$+elite$
- ENDIF
- ENDIF
- ELSE
- druck$=druck$+elite$
- ENDIF
- IF par!(5)
- druck$=druck$+elite$
- ELSE
- druck$=druck$+pica$
- ENDIF
- IF par!(6)
- druck$=druck$+kur$
- ELSE
- druck$=druck$+kuraus$
- ENDIF
- DEFMOUSE pfeil$
- RETURN
- ' ----------------------------------------------------------------------------
- ' Formatieren des Textes, der Zeilen, prüfen von Zeilen
- ' ----------------------------------------------------------------------------
- > PROCEDURE format_absatz
- LOCAL sp|,zp|,z|,rest$
- sp|=CRSCOL
- zp|=CRSLIN
- z|=1
- IF RIGHT$(zeile$(nr%))<>CHR$(174)
- REPEAT
- p|=INSTR(zeile$(nr%+z|)," ")
- IF p|
- IF LEN(zeile$(nr%+z|-1))+p|<zlen%
- zeile$(nr%+z|-1)=zeile$(nr%+z|-1)+LEFT$(zeile$(nr%+z|),p|)
- PRINT AT(1,zp|+z|-1);CHR$(27)+"l";zeile$(nr%+z|-1);AT(sp|,zp|);
- zeile$(nr%+z|)=MID$(zeile$(nr%+z|),p|+1)
- IF zp|+z|<24
- PRINT AT(1,zp|+z|);CHR$(27)+"l";zeile$(nr%+z|);AT(sp|,zp|);
- ENDIF
- INC z|
- ELSE
- p|=0
- ENDIF
- ELSE
- p|=0
- ENDIF
- UNTIL p|=0 OR RIGHT$(zeile$(nr%+z|-1))=CHR$(174) OR LEN(zeile$(nr%+z|-1))+p|>zlen%
- ENDIF
- @menueleiste
- RETURN
- > PROCEDURE format_zurueck
- LOCAL sp|,zp|,rest$,p|,p1|,z&
- sp|=CRSCOL
- zp|=CRSLIN
- z&=1
- ' ALERT 1,"fromat_zurueck Von, bis|"+STR$(von%)+" "+STR$(bis%)+"|"+STR$(anzahl_zeilen%),1,"sadf",a
- IF insertmode!
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|-1)+taste$+MID$(zeile$(nr%),sp|)
- ELSE
- IF sp|>laenge%
- zeile$(nr%)=LEFT$(zeile$(nr%),sp|)+taste$+MID$(zeile$(nr%),sp|)
- ELSE
- MID$(zeile$(nr%),sp|)=taste$
- ENDIF
- ENDIF
- IF RIGHT$(zeile$(nr%))<>CHR$(174)
- REPEAT
- p|=RINSTR(zlen%,zeile$(nr%+z&-1)," ")
- IF p|
- rest$=MID$(zeile$(nr%+z&-1),p|+1)
- zeile$(nr%+z&-1)=LEFT$(zeile$(nr%+z&-1),p|)
- IF RIGHT$(rest$)<>" " AND rest$<>" "
- rest$=rest$+" "
- ENDIF
- zeile$(nr%+z&)=rest$+zeile$(nr%+z&)
- CLR rest$
- PRINT AT(1,zp|+z&-1);CHR$(27)+"l";zeile$(nr%+z&-1);AT(sp|,zp|);
- IF zp|+z&<24 AND LEN(zeile$(nr%+z&))<zlen%
- PRINT AT(1,zp|+z&);CHR$(27)+"l";zeile$(nr%+z&);AT(sp|,zp|);
- ENDIF
- INC z&
- ELSE
- p|=0
- ENDIF
- UNTIL p|=0 OR RIGHT$(zeile$(nr%+z&-1))=CHR$(174) OR nr%+z&>=anzahl_zeilen%
- ELSE
- p|=RINSTR(zlen%,zeile$(nr%)," ")
- p1|=RINSTR(zlen%,zeile$(nr%),"-")
- p|=MAX(p|,p1|)
- rest$=MID$(zeile$(nr%),p|+1)
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)!+taste$
- PRINT AT(1,zp|);CHR$(27)+"l";zeile$(nr%)
- IF zp|<23
- PRINT AT(1,zp|+1);CHR$(27)+"L";rest$
- INSERT zeile$(nr%+1)=rest$
- ELSE
- @scroll_rauf
- DEC zp|
- PRINT AT(1,zp|+1);CHR$(27)+"L";rest$
- INSERT zeile$(nr%+1)=rest$
- ENDIF
- ENDIF
- @menueleiste
- RETURN
- > PROCEDURE trenn
- LOCAL sp|,zp|,p|,p1|,rest$,laenge|,spa|,spos|,trennen$
- nr%=oberste%-2+CRSLIN
- sp|=CRSCOL
- zp|=CRSLIN
- p|=RINSTR(zeile$(nr%)," ")
- p1|=RINSTR(zeile$(nr%),"-")
- IF p1|>p|
- p|=p1|
- ENDIF
- IF p|
- rest$=RIGHT$(zeile$(nr%),LEN(zeile$(nr%))-p|)+taste$
- IF trenne!
- p1|=INSTR(rest$," ")
- IF p1|>0
- @silbentrennung(LEFT$(rest$,p1|),trennstelle|)
- ELSE
- @silbentrennung(rest$,trennstelle|)
- ENDIF
- ELSE
- trennstelle|=0
- ENDIF
- IF trennstelle|>0
- ADD p|,trennstelle|-1
- rest$=RIGHT$(rest$,LEN(rest$)-trennstelle|+1)
- ENDIF
- IF links! ! Linksbündig im Speicher
- IF trennstelle|>0
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)+"-"
- ELSE
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)
- ENDIF
- ELSE IF rechts! !rechtsbündig im Speicher
- IF trennstelle|>0
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)+"-"
- ELSE
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)
- ENDIF
- zeile$(nr%)=SPACE$(zlen%-LEN(zeile$(nr%)))+zeile$(nr%)
- ELSE IF zentre!
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)
- laenge|=LEN(zeile$(nr%))
- spa|=zlen%/2-(TRUNC(laenge|/2))
- zeile$(nr%)=SPACE$(spa|)+zeile$(nr%)
- ELSE IF blocksatz!
- IF trennstelle|>0
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)+"-"
- ELSE
- zeile$(nr%)=LEFT$(zeile$(nr%),p|)
- ENDIF
- spos|=1
- IF INSTR(zeile$(nr%)," ")
- REPEAT
- laenge|=LEN(zeile$(nr%))
- spa|=INSTR(spos|,zeile$(nr%)," ")
- IF spa|
- zeile$(nr%)=LEFT$(zeile$(nr%),spa|-1)+" "+MID$(zeile$(nr%),spa|)
- spos|=spa|+2
- ELSE
- IF laenge|<zlen%
- spos|=1
- ENDIF
- ENDIF
- UNTIL laenge|>=zlen%-1
- ENDIF
- ENDIF
- PRINT AT(1,zp|);CHR$(27)+"l";AT(1,zp|);zeile$(nr%)
- INC nr%
- INC zp|
- INSERT zeile$(nr%)=rest$
- IF zp|>24
- @scroll_rauf
- zp|=24
- ENDIF
- PRINT AT(1,zp|);CHR$(27)+"l";
- PRINT AT(1,zp|);zeile$(nr%);
- PRINT AT(1+LEN(zeile$(nr%)),zp|);CHR$(27)+"e";
- ENDIF
- RETURN
- > PROCEDURE textformat(von%,bis%)
- LOCAL rest%,p|,p1|
- IF anzahl_zeilen%>1
- IF RIGHT$(zeile$(bis%))<>CHR$(174)
- bis%=anzahl_zeilen%
- ENDIF
- IF links!
- IF von%>0 AND von%<=anzahl_zeilen% AND bis%>von% AND bis%<=anzahl_zeilen%
- FOR i%=von% TO bis%
- zeile$(i%)=TRIM$(zeile$(i%))
- laenge|=LEN(zeile$(i%))
- IF laenge|>zlen%
- p|=RINSTR(zlen%,zeile$(i%)," ")
- p1|=RINSTR(zlen%,zeile$(i%),"-")
- IF p1|>p|
- p|=p1|
- ENDIF
- rest$=MID$(zeile$(i%),p|)
- zeile$(i%)=LEFT$(zeile$(i%),p|)
- IF zeile$(i%+1)<>""
- zeile$(i%+1)=rest$+zeile$(i%+1)
- ELSE
- INSERT zeile$(i%+1)=rest$
- INC anzahl_zeilen%
- ENDIF
- ENDIF
- FOR l|=1 TO LEN(zeile$(i%))
- IF MID$(zeile$(i%),l|,1)=" "
- REPEAT
- t$=MID$(zeile$(i%),l|+1,1)
- IF t$=CHR$(32)
- zeile$(i%)=LEFT$(zeile$(i%),l|)+MID$(zeile$(i%),l|+2)
- ENDIF
- UNTIL t$<>CHR$(32)
- ENDIF
- NEXT l|
- NEXT i%
- oberste%=0
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- ELSE IF rechts!
- IF von%<anzahl_zeilen% AND bis%<=anzahl_zeilen%
- FOR i%=von% TO bis%
- zeile$(i%)=TRIM$(zeile$(i%))
- zeile$(nr%)=SPACE$(zlen%-LEN(zeile$(nr%)))+zeile$(nr%)
- NEXT i%
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- ELSE IF zentre!
- IF von%<anzahl_zeilen% AND bis%<=anzahl_zeilen%
- FOR i%=von% TO bis%
- zeile$(i%)=TRIM$(zeile$(i%))
- laenge|=LEN(zeile$(i%))
- spa|=zlen%/2-(TRUNC(laenge|/2))
- zeile$(i%)=SPACE$(spa|)+zeile$(i%)
- NEXT i%
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- ELSE IF blocksatz!
- IF von%<anzahl_zeilen% AND bis%<=anzahl_zeilen%
- FOR i%=von% TO bis%
- zeile$(i%)=TRIM$(zeile$(i%))
- spos|=1
- IF INSTR(zeile$(i%)," ")
- REPEAT
- laenge|=LEN(zeile$(i%))
- sp|=INSTR(spos|,zeile$(i%)," ")
- IF sp|
- zeile$(i%)=LEFT$(zeile$(i%),sp|-1)+" "+MID$(zeile$(i%),sp|)
- spos|=sp|+2 !INSTR(sp%+1,zeile$(nr%)," ")
- ELSE
- IF laenge|<zlen%
- spos|=1
- ENDIF
- ENDIF
- UNTIL laenge|>=zlen%-1
- ENDIF
- NEXT i%
- @ausgabe_ab_zeile(oberste%+1)
- ENDIF
- ENDIF
- @menueleiste
- ENDIF
- RETURN
- > PROCEDURE zeile_testen(VAR zeile$)
- LOCAL z$
- FOR l|=1 TO LEN(zeile$)
- z$=MID$(zeile$,l|,1)
- SELECT z$
- CASE "ä"
- z$=CHR$(123)
- CASE "ü"
- z$=CHR$(125)
- CASE "ö"
- z$=CHR$(124)
- CASE "Ä"
- z$=CHR$(91)
- CASE "Ü"
- z$=CHR$(93)
- CASE "Ö"
- z$=CHR$(92)
- CASE "ß"
- z$=CHR$(126)
- CASE "§"
- z$=CHR$(64)
- ENDSELECT
- MID$(zeile$,l|,1)=z$
- NEXT l|
- RETURN
- > PROCEDURE silbentrennung(wort$,VAR pos|)
- ' gibt eine Trennstelle zurück, die nach Pos liegt
- pos|=0
- kflag!=FALSE
- IF LEN(wort$)>4 THEN
- ' nur Worte testen, die lang genug sind
- REPEAT
- IF pos|=1 THEN
- ' Vorsilbentest nur durchführen, wenn am Wortanfang
- FOR i|=1 TO 24
- IF INSTR(UPPER$(wort$),UPPER$(vorsilbe$(i|)))=1 THEN
- ' Vorsilbe gefunden
- pos|=LEN(vorsilbe$(i|))+1
- ENDIF
- NEXT i|
- ENDIF
- ' wenn keine Vorsilbe in Frage kommt, normal trennen
- IF pos|=0 THEN
- ' ersten Vokal im Wort suchen
- stelle|=pos|
- WHILE (INSTR(vokalmenge$,MID$(wort$,stelle|,1))=0) AND (stelle|<=LEN(wort$))
- INC stelle|
- WEND
- ' Stelle zeigt jetzt auf ersten Vokal oder Wortende
- IF stelle|<LEN(wort$)-1 THEN
- ' nächsten Konsonanten suchen
- REPEAT
- INC stelle|
- UNTIL (INSTR(vokalmenge$,MID$(wort$,stelle|,1))=0) OR (stelle|>=LEN(wort$))
- ' zweiten Vokal nach POS suchen
- WHILE (INSTR(vokalmenge$,MID$(wort$,stelle|,1))=0) AND (stelle|<=LEN(wort$))
- INC stelle|
- WEND
- IF stelle|<=LEN(wort$) THEN
- pos|=stelle|-1
- ' Trennmöglichkeit = Konsonant vor zweitem Vokal
- ENDIF
- ENDIF
- ENDIF
- ' Trennmöglichkeit auf Gültigkeit überprüfen
- IF pos|<>0 THEN
- ' nicht trennbare Kombinationen ausschließen
- sch|=INSTR(UPPER$(wort$),"SCH")
- IF (sch|<>0) AND ((sch|=pos|-2) OR (sch|=pos|-3)) THEN
- ' vor SCH trennen
- pos|=sch|
- ENDIF
- IF INSTR(nichttrennen$,MID$(wort$,pos|-1,2))<>0 THEN
- ' vor nicht-trennbarer Kombination trennen
- DEC pos|
- ENDIF
- IF MID$(wort$,pos|-1,2)="ck" THEN
- ' ck wird als kk getrennt, deshalb Flag setzen
- kflag!=TRUE
- ENDIF
- IF (pos|<=2) OR (pos|>=LEN(wort$)) THEN
- stelle|=0
- pos|=0
- ENDIF
- ENDIF
- UNTIL (pos|<>0) OR (stelle|>=LEN(wort$)-1)
- ENDIF
- RETURN
- > PROCEDURE seitenummer_drucken(VAR s$)
- LOCAL p|,seite$
- p|=INSTR(s$,"#")
- IF p|
- seite$=STR$(INT(i%/seitelen%)+1)
- IF LEN(seite$)=1
- MID$(s$,p|,1)=seite$
- ELSE
- s$=LEFT$(s$,p|-1)+seite$+MID$(s$,p|+1)
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE sheet(a%,b%,c%,d%,e%)
- DEFFILL 1,1,1
- PBOX a%+e%,b%+e%,c%+e%,d%+e%
- DEFFILL 1,0,0
- PBOX a%,b%,c%,d%
- BOX a%+1,b%+1,c%-1,d%-1
- RETURN
- > PROCEDURE head(a%,b%,c%,a$)
- DEFFILL 1,1,1
- PBOX a%+2,b%+2,c%+2,b%+19
- DEFFILL 1,2,4
- PBOX a%,b%,c%,b%+17
- pos%=a%+(c%-a%)/2-((LEN(a$)+2)/2)*8
- TEXT pos%,b%+14," "+a$+" "
- RETURN
- > PROCEDURE tbc
- REPEAT
- z$=INKEY$
- UNTIL z$=""
- RETURN
- > PROCEDURE seite_zeigen
- LOCAL cc$,se|,sp|,zp|
- sp|=CRSCOL
- zp|=CRSLIN
- se|=INT((oberste%-2+zp|-1)/seitelen%)
- GET 95,25,280,91+4*seitelen%,cc$
- @sheet(95,25,275,86+4*seitelen%,5)
- @head(100,30,270,"Übersicht S."+STR$(1+se|))
- FOR i%=1 TO seitelen%
- FOR j%=1 TO LEN(zeile$((se|*seitelen%)+i%)) !zlen%
- IF MID$(zeile$(se|*seitelen%+i%),j%,1)<>" "
- BOX 103+2*j%,48+4*i%,103+2*j%,50+4*i%
- ENDIF
- NEXT j%
- NEXT i%
- @sheet(102,60+4*seitelen%,267,79+4*seitelen%,2)
- TEXT 177,75+4*seitelen%,"Ok"
- ' REPEAT
- ' MOUSE x%,y%,k%
- ' i$=INKEY$
- ' UNTIL i$=CHR$(13) OR (k%=1 AND x%>102 AND x%<267 AND y%>60+4*m.ax% AND y%<79+4*m.ax%)
- REPEAT
- UNTIL INKEY$<>"" OR MOUSEK
- PUT 95,25,cc$
- PRINT AT(sp|,zp|);
- RETURN
- '
- vorsilben:
- DATA heraus,unter,hinunter,silben,trenn
- DATA ab,an,bei,be,er,ge,feg,fe,um,un,ur,zu,ok
- DATA auf,aus,dar,ein,ent,her,hin,miß,ver,vor,weg,zer
- DATA nach,über
-